web-dev-qa-db-ja.com

カテゴリ別にフィルタリングされたカスタム投稿タイプを表示

各カテゴリページに表示するためのいくつかのスライダーを含むカスタム投稿タイプ(exact category.php)を計画どおりに1つずつ用意します。

すべてのスライダーは関連カテゴリーに割り当てられました。

現在私は http://wordpress.org/plugins/custom-post-type-ui/ を使用して、スライダーというカスタム投稿タイプを作成しています。

そして私はメニューの猫の名前を押している間カテゴリーからのすべての記事を表示するための以下のコードを持っています。もちろんうまくいきます。

<?php $cat = get_the_category(); $cat = $cat[0]; ?>
<?php query_posts($query_string . '&cat='. $cat->cat_ID .''); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
        <?php the_content(); ?> 
  <?php endwhile; else: endif; ?>

しかし問題は、スライダー(カスタム投稿タイプ)をカテゴリー別にフィルターできないことです。

wp_queryを呼び出すと、すべてのスライダがロールアウトされ、get cat id argは無視されます。

すべてのカテゴリではなく、特定のカテゴリのスライダだけを表示するようにしました。

だから私は右のスライダーだけを呼び出すためのクエリを求めています。

1
Cwkin7

私はあなたの問題を解決し、解決策を思いついた(私は問題を理解している限り)。

それはこのように動作します:

スライダーという投稿タイプをスライダーという分類と共に登録します。

これにより、すべてのスライダーを格納し、スライダーと呼ばれるこのカスタム分類法でそれらを分類できる投稿タイプが作成されます。

投稿タイプを登録するためのCODE。 (これはfunctions.phpに入ります)

//Custom Post Type Sliders
add_action('init','post_type_slider');
function post_type_slider(){
    register_post_type('sliders',
        array(
            'labels' => array(
                'name'          =>  'Sliders',
                'singular_name' =>  'Sliders',
                'menu_name'     =>  'Sliders',
                'all_items'     =>  'All Sliders',
                'add_new'       =>  'Add A Slider',
                'add_new_item'  =>  'Add New Slider'
                ),
            'public'    => true,
            'supports'  => array(
                            'title',
                            'post-formats',
                            'tags',
                            'editor'
                            ),
            'show_in_admin_bar' =>  true,
            'has_archive'   =>  true
            )
        );

        //Slider Taxanomy Labels
        $labels = array(
            'name'                  => _x( 'Select Slider', 'Taxonomy plural name', 'text-domain' ),
            'singular_name'         => _x( 'Sliders', 'Taxonomy singular name', 'text-domain' ),
            'search_items'          => __( 'slider', 'text-domain' ),
            'all_items'             => __( 'All Sliders', 'text-domain' ),
            'edit_item'             => __( 'Edit Slider', 'text-domain' ),
            'update_item'           => __( 'Update Slider', 'text-domain' ),
            'add_new_item'          => __( 'Add New Slider', 'text-domain' ),
            'new_item_name'         => __( 'New Slider Name', 'text-domain' ),
            'add_or_remove_items'   => __( 'Add or remove Slider', 'text-domain' ),
            'menu_name'             => __( 'Sliders', 'text-domain' ),
        );
        //Slider Taxonomy Arguments
        $slider_args = array(
            'labels'            => $labels,
            'public'            => true,
            'show_in_nav_menus' => true,
            'show_admin_column' => false,
            'hierarchical'      => true,
            'show_tagcloud'     => true,
            'show_ui'           => true,
            'query_var'         => true,
            'rewrite'           => true,
        );

        register_taxonomy( 'slider', array( 'sliders' ), $slider_args );
    }

これで、さまざまなスライダーに関連するすべての投稿を収集する投稿タイプを作成しました。次に、選択した分類法に基づいてこれらの投稿を表示できるカスタムページを作成します。見せる最も良い方法はテーマのディレクトリにtaxonomy-slider.phpを作成することです。このページはスライダーカテゴリに基づいて自動的に投稿をキャッチします。

taxonomy-slider.phpを作成して次のコードを貼り付けます:

<?php
    while(have_posts()):
        the_post();
        the_title();
    endwhile;
?>

好きなようにカスタマイズしてください。

注:すべての手順の後。 [設定]> [パーマリンク]ページにアクセスします。これは、カスタム投稿タイプを登録することによって行われた変更を保存します。

1
Sudeep K Rana