web-dev-qa-db-ja.com

ページのカテゴリを設定する

私の現在のテーマは、どのカテゴリーにあるかに基づいて配列項目を持つことができるポートフォリオセクションを持っています。私の問題は、私がポートフォリオセクションに入れたいページがいくつかあるということです。カテゴリを個々のページにのみ投稿するように割り当てます。この問題を回避する方法やプラグインはありますか?

これが私のポートフォリオのカテゴリを呼び出すことを私が信じるいくつかのコードです:php:

<?php  if(is_category() && in_category($current_id) || post_is_in_descendant_category($current_id)){?>
        <h1><?php single_cat_title(); ?></h1>
        <ul class="portfolioCategs">
            <li><a href="<?php echo get_category_link(get_option('boldy_portfolio'))?>">All projects</a></li>
            <?php   
                    $categories = get_categories('hide_empty=1&child_of='.$categs);
                    foreach ($categories as $cat) {
                    echo ('<li><a href="');
                    echo (get_category_link($cat->cat_ID).'">'.$cat->cat_name.'</a></li>');
                    }
                ?>
        </ul>
    <?php } ?>
    <div style="clear:both"></div>
        <div class="gallery">
            <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
                    <div class="portfolioItem">
                        <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
                        <a href="<?php echo get_thumb_urlfull($post) ?>" rel="prettyPhoto" title="<?php the_title();?>"><?php the_post_thumbnail(); ?></a>
                        <p><?php the_excerpt() ?></p>
                    </div>
            <?php endwhile; ?>

ありがとうニック。

2
Nick

カテゴリは投稿に適用される分類法です。ページは投稿ではありません。ページはページです。

コンテンツにカテゴリ分類を使用する必要がある場合は、いくつかの選択肢があります。

  1. そのコンテンツには、PagesではなくPostを使用してください。
  2. 静的ページのカテゴリ分類を登録します。以下をfunctions.php(またはPlugin)に配置してください。

これは静的ページのカテゴリを有効にします。

Grr ...コードは表示したくありません:

<?php 
register_taxonomy_for_object_type( 'category', 'page' ); 
?>

編集2

メインループクエリを修正する正しい方法はpre_get_postsによるものです。そのようです:

function wpse29834_filter_pre_get_posts( $query ) {
    if ( is_category() && $query->is_main_query() ) {
        $query->set( 'post_type', array( 'post', 'page' ) );
    }
}
add_action( 'pre_get_posts', 'wpse29834_filter_pre_get_posts' );

pre_get_postsを使用することはquery_posts()を使用することより優先されます、しかし、オリジナルの解決策はこの場合うまくいきます。

(オリジナルソリューション)

カテゴリ化されたページをカテゴリアーカイブインデックスのループに表示するには、 query_posts() 関数を使用してループクエリをcategory.phpで変更する必要があります。例えば。:

<?php
// Declare the global
global $wp_query;
// Define our custom args
// We're telling the query to use
// both Posts and Pages
$custom_args = array( 'post_type' => array( 'post', 'page' ) );
// Merge the default query with our custom query
$query_args = array_merge( $wp_query->query, $custom_args );
// Finally, query posts based on our custom args
query_posts( $query_args );
?>

このコードを配置してから、ループを出力します

1
Chip Bennett