web-dev-qa-db-fra.com

in_category () fonctionne dans single.php mais pas dans page.php?

J'utilise in_category(array) dans The Loop pour détecter si un article est classé dans la catégorie Discussion (ou si l'une de ses slug est sélectionnée). Cela fonctionne à merveille sur single.php mais ne semble même pas être évalué lorsqu'il est utilisé dans page.php?

FWIW, voici mon code:

<?php if ( in_category( array( 'Discussions', 'discussion', 'discussion-article' ) )) :?>
<p id="discussions-prepended"><em>This is an article from our Discussions series - read more in the <a href="/discussions">Discussions section</a>.</em></p>
<?php endif;?>

Sur l'instance borked page.php, j'ai aussi essayé

<?php elseif:?>
<p>This post does not meet the category criteria.</p>
<?php endif;?>

mais cela ne montre pas non plus que cela m'amène à croire que le code n'est pas en cours d'évaluation. Cet extrait de code a été, dans les deux cas, inséré directement avant <?php the_content(''); ?> (the_content() dans single.php); cela ne suffit pas à être évalué ou affiché dans page.php. Comportement intentionnel ou est-ce que je me trompe?

1
Chris Woods

Sauf si vous avez ajouté la fonctionnalité avec un plugin ou un code personnalisé, les pages ne sont pas placées dans des catégories. Les pages sont organisées avec les pages parent et les pages enfants. C'est pourquoi (je soupçonne) in_category () ne fonctionne pas dans page.php

Le code suivant dans functions.php ajoutera des catégories à Pages.

/**
*   Add categories to Pages.
*   from http://shibashake.com/wordpress-theme/add-tags-and-categories-to-your-wordpress-page
*/ 

    function add_custom_tags_box() {
        add_meta_box(   'categorydiv', __('Categories'), 'post_categories_meta_box', 
                'page', 'side', 'low'); 
       register_taxonomy_for_object_type('category', 'page');
    }  

J'espère que cela t'aides.

3
danielwiener