WordPress : Comment détecter les pages de base /category et /tag ?

Publié par Jean-Michel le

Dans un thème que je construis, j’ai cette structure pour détecter de quel type de page il s’agit. Cependant, si je visite mydomain.com/category/ ou mydomain.com/tag/, tout ce que je reçois est le message « rien trouvé » que j’ai dans l’instruction else de have_posts(). Existe-t-il un moyen de détecter quand ces liens sont visités et d’afficher autre chose que ce qui se trouve dans la dernière instruction else ?

if(is_category()):
   echo '<h1>title here</h1>';
elseif(is_tag()):
   echo '<h1>title here</h1>';
elseif(is_author():
   echo '<h1>title here</h1>';
elseif(is_archive()):
   echo '<h1>title here</h1>';
endif;

if(have_posts()):
     //the loop
else:
    echo '<h1>Nothing Found</h1>';
endif;

Solution n°1 trouvée

Si je mets cela au-dessus du bloc htaccess des règles de wordpress, je peux rediriger les pages de base des balises et des catégories vers la page d’accueil.

RewriteCond %{HTTP_HOST} ^mydomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule ^category/?$ "http://mydomain.com" [R=301,L]
RewriteRule ^tag/?$ "http://mydomain.com" [R=301,L]

Solution n°2 trouvée

Il n’y a pas de bonne façon de le faire, mais cela peut être fait d’une certaine manière. Lorsque vous visitez /category/, il le sert comme si vous visitiez une page appelée catégorie. Vous pouvez rechercher ceci comme:

global $wp_query;
if ($wp_query->query_vars['pagename'] == "category")
{
  // This is base category
}
else if ($wp_query->query_vars['pagename'] == "tag")
{
// this is tag base
}

Mais cela ne devrait jamais être fait. Il s’agit essentiellement d’une requête indésirable ; un 404, et enverra un code de réponse 404, vous devrez donc envisager d’envoyer un autre code de réponse. Pour cette raison (si vous décidez de l’utiliser), ce code devrait aller dans header.php bien qu’il puisse aller haut dans 404.php (avant toute sortie).

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 *