web-dev-qa-db-fra.com

si in_category sur archive.php

J'essaie donc de faire une déclaration if/else sur un modèle archive.php. Je configure mes archives avec WP archives Smart rechargées (http://wordpress.org/extend/plugins/smart-archives-reloaded/)

Le code de mon archive.php est le suivant:

<?php
   if (in_category('166')) { include 'archive-blog.php';
}

else {
   echo('foo');
}
?>

J'essaie d'obtenir que archive.php inclue un certain modèle en fonction du numéro de catégorie. Cependant, ce code saisit le modèle de blog d’archive quel qu’il soit (même si je clique sur une archive de catégorie autre que le blog).

Je me demande si je ne le fais pas correctement - in_category ne fonctionne-t-il pas sur une page d'archive? J'ai une configuration similaire avec un single.php qui dirige vers un modèle d'inclusion différent basé sur la catégorie.

Merci!

Update

J'ai aussi essayé d'utiliser is_category et cela semble ignorer complètement ma première condition et faire écho à foo pour toutes les catégories.

<?php
   if (is_category('166')) { include 'archive-blog.php';
}

else {
   echo('foo');
}
?>

Lien vers ce dont je parle: (allez dans les archives dans la barre de droite)

http://www.metropoliscreative.com/talent-analytics/w/?cat=166

http://www.metropoliscreative.com/talent-analytics/w/?cat=3

aussi, je n'utilise pas de permaliens car le serveur de clients n'a pas de mod-rewrite

2
nikibrown

Si la mémoire est utile, in_category () est utilisé dans la boucle et renvoie true lorsque la publication en cours appartient à cette catégorie.

Vous êtes probablement pour is_category (166).

2
Denis de Bernardy

Sinon, vous pouvez simplement nommer votre fichier pour que WordPress sache l’utiliser pour cette catégorie. Selon le Codex , WordPress recherche les fichiers suivants (dans cet ordre) afin d’afficher vos catégories:

  1. catégorie-slug.php
  2. category-ID.php
  3. catégorie.php
  4. archive.php
  5. index.php

Donc, si vous avez nommé/créé un fichier modèle appelé category-166.php, WordPress l'utilisera pour afficher la catégorie 166.

2
Manzabar

vous y êtes presque ce n'est pas dans la catégorie ('166') mais dans la catégorie is_category ('166'), les différences sont les suivantes:

  • in_category vérifie si single est dans cette catégorie.
  • is_category vérifie si current est cette page d'archive de catégorie.
1
Bainternet
<?php
$post = $wp_query- >post;
if ( in_category('166') ) {
include(TEMPLATEPATH . '/archive-blog.php’);
} else {
   echo('foo');
} ? >

est-ce ce que vous cherchez?

0
user3006

Essayez is_category() à la place.

Exemple. Vérifiez si dans la catégorie 12 OR 13

<?php if ( is_category('12') || is_category('13')) {  ?>

    TEST

<?php }   ?>
0
Kat