Question

J'ai ajouté un filtre pour ajouter un paramètre sur l'URL lors de la navigation dans les catégories. Il est utilisé à des postes de tri par leurs votes lors de la navigation une catégorie seulement si un paramètre sort est réglé.

Par exemple, lorsque vous cliquez sur Afficher tous les messages avec la plupart des votes, les messages avec de hauts votes sont affichés. De là, vous pouvez voir les plus votés messages par catégorie en ajoutant un sort=most_voted ou sort=doleast_voted à l'URL avec 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;
}

Je ne peux pas comprendre pourquoi le paramètre de tri n'est pas ajouté à l'URL. Cela fonctionne sans toutefois les déclarations et si une valeur au lieu du $my_parameter dans le add_query_arg.

EDIT: Nouveau code de travail

    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;
    }
Était-ce utile?

La solution

Si vous jetez un coup d'œil où le crochet de category_link est défini dans catégorie template.php vous verrez ce crochet particulier passe sur deux variables. La deuxième variable est l'ID de catégorie, mais votre fonction de rappel traite que deuxième variable entrant comme un objet de la requête.

En termes simples, vous êtes à la recherche d'une propriété query_vars / clé qui ne fonctionne pas et ne peut pas exister, car la variable entrante n'est pas un objet de requête.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top