web-dev-qa-db-ja.com

in_category()はsingle.phpでは動作しますがpage.phpでは動作しませんか?

私は in_category(array) をThe Loop内で使用して、投稿がディスカッションカテゴリに分類されているかどうかを検出します(または2つのスラッグのうちの1つがあります)。これはsingle.phpで美しく動作しますが、page.phpの中で使われたときに評価されることすらありませんか?

FWIW、これが私のコードです:

<?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;?>

混乱したpage.phpインスタンスで、私も試してみました

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

しかし、それはコードが評価されていないと信じるように私を導いていることも示していません。どちらの場合も、このコードスニペットは<?php the_content(''); ?>(single.phpのthe_content())の直前に挿入されました。それは評価されないか、page.phpに現れません。意図的な行動ですか、それとも間違っているのでしょうか。

1
Chris Woods

プラグインまたはカスタムコードを使用して機能を追加していない限り、PagesはCategoriesに配置されません。ページは、親ページと子ページで構成されています。 in_category()がpage.phpで動作しないのはこのためです。

Functions.phpの次のコードは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');
    }  

お役に立てれば。

3
danielwiener