WordPress : Passer une variable d’URL à category.php

Publié par Jean-Michel le

J’ai besoin de passer une variable URL à mon fichier category.php .
Actuellement, ma page de catégorie est sur http://example.com/category-slug/
J’utilise le plugin SEO pour réécrire http://example.com/category/category-sluget supprimer la /category/partie.

De plus, les paramètres de mes permaliens sont définis sur cette option dans le menu des paramètres :http://example.com/sample-post/

Maintenant, je dois pouvoir passer une variable dans l’URL comme :

http://example.com/category-slug/?type=VALUE

ou

http://example.com/category-slug/VALUE

où « type » est le nom de la variable et VALUE est sa valeur

J’ai essayé d’utiliser ce morceau de code dans mon fichier functions.php :

<?php
   add_filter('query_vars', 'parameter_queryvars' );
   function parameter_queryvars( $qvars )
     {
        $qvars[] = 'type';
        return $qvars;
     }
    global $wp_query;
     if (isset($wp_query->query_vars['type']))
      {
        print $wp_query->query_vars['type'];
      }
?>

Cependant, lorsque j’essaie d’ouvrir http://example.com/category-slug/?type=somethingou http://example.com/category-slug/somethingque j’obtiens des pages « rien trouvé » et « Page introuvable ».

Bien que je vois que cela a été discuté à maintes reprises, aucune des solutions ne semble fonctionner pour mon cas.
Comment passer correctement une variable à une page de catégorie ?

Solution n°1 trouvée

Tout d’abord, votre code n’atteindra jamais l’instruction if, car vous revenez de la fonction précédente.

Je ne sais pas non plus quel outil SEO vous utilisez, mais il y a une fonction qui va avec le filtre « query_vars »: add_rewrite_rule()

Je recommanderais d’écrire un petit plugin qui fait la réécriture du permalien de la catégorie. Quelque chose comme ça (non testé, mais similaire à un plugin que j’utilise):

// Flush added rewrite rules on activation
function category_permalink_rewrite_activate() {
    category_permalink_rewrite_set_rewrite_rules();
    flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'category_permalink_rewrite_activate' );

// Remove rewrite rule for event archives
function category_permalink_rewrite_deactivate() {
    flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, 'category_permalink_rewrite_deactivate' );

// Add rewrite rule for category permalink on init
    add_rewrite_rule( '^category-(.*)/(.*)', 'index.php?category_name=$matches[1]&type=$matches[2]', 'top' );
kaufunction category_permalink_rewrite_set_rewrite_rules() {
}
add_filter( 'init', 'category_permalink_rewrite_set_rewrite_rules' );

// Register the custom query var so WP recognizes it
function category_permalink_rewrite_add_query_vars( $vars ) {
    $vars[] = 'type';
    return $vars;
}
add_filter( 'query_vars', 'category_permalink_rewrite_add_query_vars' );

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *