Domanda

Ho aggiunto un filtro per aggiungere un parametro sulla URL durante la navigazione in categorie. Questo è usato per i messaggi di ordinamento per i loro voti durante la navigazione di una categoria solo se un parametro è impostato sort.

Per esempio, quando si fa clic su Visualizza tutti i messaggi con maggior numero di voti, vengono visualizzati i messaggi con alti voti. Da lì si può vedere più votato i messaggi di categoria aggiungendo un sort=most_voted o sort=doleast_voted all'URL con cat=?.

add_filter( 'category_link','append_parameter', 10, 2 );

function append_parameter( $link, $query ) {
$my_parameter = $query->query_vars['sort']; //get sort value
if ( isset($my_parameter) ) { //if browsing posts by votes
    $link = add_query_arg( 'sort', $my_parameter, $link );
}
    return $link;
}

Non riesco a capire perché il parametro di ordinamento non viene aggiunto all'URL. Questo funziona tuttavia senza istruzioni if ??e un valore al posto del $my_parameter nel add_query_arg.

EDIT: Nuovo codice funzionante

    add_filter( 'category_link','append_parameter', 10, 2 );

    function append_parameter( $link, $my_parameter ) {
    $my_parameter = $_GET['sort']; //get sort value       
    if ( isset($my_parameter) ) { 
        $link = add_query_arg( 'sort', $my_parameter, $link );
    }
        return $link;
    }
È stato utile?

Soluzione

Se si dà un'occhiata in cui il gancio category_link è definito in categoria-template.php vedrete questo particolare gancio passa da due variabili. La seconda variabile è l'ID della categoria, ma la funzione di callback tratta che seconda variabile in entrata come un oggetto query.

In poche parole, si sta cercando un / chiave di proprietà query_vars che non fa e non può esistere, perché la variabile in entrata non è un oggetto query.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top