web-dev-qa-db-ja.com

カスタム分類のカテゴリに投稿が表示されない

私のカスタム分類法のカテゴリーからの投稿を表示したいのですが、実際にこれを達成する方法がわかりません。デフォルトの投稿カテゴリでは期待通りに機能する同位体フィルタリングを使用しています。特定のカテゴリをクリックすると、そのカテゴリに関連するすべての投稿が表示されますが、カスタム分類法では機能しません。 (Rajeev Vyasのおかげで)すべてのサブ分類法を見ることができますが、それらの1つをクリックしているとき - 投稿は表示されません。私が間違っていることを教えてください。

これは私のfunctions.phpからのコードです:

add_action('init', 'portfolio_register');
function portfolio_register() {
     $labels = array(
        'name' => _x('My Portfolio', 'post type general name'),
        'singular_name' => _x('Portfolio Item', 'post type singular name'),
        'add_new' => _x('Add New', 'portfolio item'),
        'add_new_item' => __('Add New Portfolio Item'),
        'edit_item' => __('Edit Portfolio Item'),
        'new_item' => __('New Portfolio Item'),
        'view_item' => __('View Portfolio Item'),
        'search_items' => __('Search Portfolio'),
        'not_found' =>  __('Nothing found'),
        'not_found_in_trash' => __('Nothing found in Trash'),
        'parent_item_colon' => ''
    );
    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'query_var' => true,
        'menu_icon' => get_stylesheet_directory_uri() . '/images/portfolio-icon.png',
        'rewrite' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'menu_position' => null,
        'supports' => array('title','editor','author','thumbnail','comments')
      ); 
    register_post_type( 'portfolio' , $args );
    flush_rewrite_rules();
}
// Custom taxonomy for Portfolio Categories (Galleries)
register_taxonomy('galleries', array('portfolio'), array('hierarchical' => true, 'label' => 'Galleries', 'singular_label' => 'Gallery', 'rewrite' => true, 'public' => true ));


そして、このコードは私のカスタム投稿タイプテンプレートである私のloop.phpからのものです:

 <?php /* Display filter options if homepage  */ ?>
<?php if(is_home()) { ?>
<div id="filtering-nav">
        <a href="#" class="filter-btn"><span>Filter</span></a>
        <ul>
                <li><a href="#all" class="all">All</a></li>
            <?php
            $args=array( 'orderby' => 'name', 'taxonomy'=>'galleries' );
            $categories=get_categories($args);
            foreach($categories as $category) {  ?>
                    <li><a href="#<?php echo $category->category_nicename; ?>" class="<?php echo $category->category_nicename; ?>"><?php echo $category->name; ?></a></li>
            <?php } ?>
        </ul>
        <div class="clearfix"></div>
</div>
<?php } ?>

<?php /* If this is the homepage, display all posts on one page  */ 
if(is_home() && get_option('show_all') && !is_search()) { query_posts('post_type=portfolio', 'posts_per_page=-1'); } ?>

<?php if (have_posts()) : ?>


私の英語があなたの目を傷つけないことを願っています....

1
Adrian

投稿タイプを取得するには、分類用語ページのクエリを変更する必要があります。

試してみてください。

add_filter('pre_get_posts', 'filter_custom_taxonomy_posts');
function filter_custom_taxonomy_posts($query) {
    if (is_tax('Your_Taxonomy_Name')) {
        $query->set('post_type', 'portfolio');
        $query->set('posts_per_page', -1);
    }
  return $query;
}
1
Bainternet