web-dev-qa-db-ja.com

カスタム投稿タイプのカテゴリは正しく表示されません

私は私のウェブサイトでカスタム投稿タイプを使用しました:私はarchive-{mytaxonomy}.phpsingle-{mytaxonomy}.phpも追加しました。

私はまた私の分類法のために別のサイドバーを作成しました、そして私が私のカテゴリーの1つをクリックするまですべてがうまく見えます。それからarchive.phpをロードします。

ファイルに他のコードを追加する必要がありますか?

1
user3067592

カテゴリーと分類法はまったく同じではありません。

カテゴリは、 デフォルトの分類法です

カスタム投稿タイプでカテゴリを使用できますが、真実はさまざまなアイテムをさまざまな方法でグループ化するための非常に強力な方法であるため、カスタム分類法を使用することをお勧めします。

add_action( 'init', 'wpsites_custom_taxonomy_types' );
function wpsites_custom_taxonomy_types() {

register_taxonomy( 'cpt-type', 'cpt',
    array(
        'labels' => array(
            'name'          => _x( 'Types', 'taxonomy general name', 'themename' ),
            'add_new_item'  => __( 'Add New CPT Type', 'themename' ),
            'new_item_name' => __( 'New CPT Type', 'themename' ),
        ),
        'exclude_from_search' => true,
        'has_archive'         => true,
        'hierarchical'        => true,
        'rewrite'             => array( 'slug' => 'cpt-type', 'with_front' => false ),
        'show_ui'             => true,
        'show_tagcloud'       => false,
    )
);

}

上記のようにカスタム分類タイプを作成するオプションを追加するコードを追加した場合は、次のような名前のファイルを作成する必要があります。

taxonomy-cpt-type.php

Cptはカスタム投稿タイプの名前です。

上記のコードをあなたの子テーマ関数ファイルで使用して、cptとCPTのすべてのインスタンスをあなたのカスタム投稿タイプの名前に置き換えることができます。

カスタム投稿タイプを登録するコードに次の行を追加する必要もあります。

'taxonomies'   => array( 'cpt-type' ),

これが実用的な例です。

add_action( 'init', 'wpsites_custom_post_type' );
function wpsites_custom_post_type() {

register_post_type( 'cpt',
    array(
        'labels' => array(
            'name'          => __( 'CPT', 'wpsites' ),
            'singular_name' => __( 'CPT', 'wpsites' ),
        ),
        'has_archive'  => true,
        'hierarchical' => true,
        'menu_icon'    => 'dashicons-portfolio',
        'public'       => true,
        'rewrite'      => array( 'slug' => 'cpt', 'with_front' => false ),
        'supports'     => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'revisions', 'page-attributes' ),
        'taxonomies'   => array( 'cpt-type' ),

    )
);

}

繰り返しますが、cptとCPTのすべてのインスタンスをカスタム投稿タイプの名前に置き換えます。

カスタム投稿タイプのアーカイブページの場合は、次のようにします。

archive-cpt.php

カスタム投稿タイプの単一ページの場合は、次のようにします。

single-cpt.php

繰り返しますが、ファイル名のcptをカスタム投稿タイプの名前に置き換えます。

1
Brad Dalton

特定のカテゴリのカスタム投稿タイプの投稿を取得するには、カスタム分類法を使用します。

カテゴリのようなカスタム投稿タイプの分類名を登録してから、新しい投稿を追加したときに各投稿にカテゴリを割り当てます。カスタム投稿タイプnewsとその分類法news_categoryのコード例を次に示します。

  add_action( 'init', 'news_my_taxonomy');
  function news_my_taxonomy(){
 // custom post type taxonomies
    $labels = array(
    'name' => 'Categories',
    'singular_name' => 'Category',
    'add_new' => 'Add Category',
    'add_new_item' => 'Add New Category',
    'all_items' => 'All Categories',
    'edit_item' => 'Edit Item',
    'new_item' => 'New Item',
    'view_item' => 'View Item',
    'update_item' => 'Update Category',
    'search_items' => 'Search Categories',
    'not_found' => 'No record found',
    'not_found_in_trash' => 'No items found in trash',
    'parent_item_colon' => 'Parent Item',
    'menu_name' => 'Categories'
    );
    $args = array(
        'labels' => $labels,
        'hierarchical' => true,
        'has_archive' => true,
        'rewrite' => array('slug' => 'news_category'),
        'show_ui' => true,
        'show_admin_column' => true,
        'query_var' => true,
        );
        register_taxonomy('news_category', array('news'), $args);
}

それから

分類テンプレートページ 'taxonomy-news_category.php'を作成します。

このカテゴリ名の投稿を取得するためのクエリを追加します

   $cat_name = single_cat_title;
   $args = array( 'category_name' => $cat_name, 'posts_per_page' => 12, 'order'=> 'ASC', 'post_type' => 'news', 'paged' => $paged);

それでおしまい。

1
HeroWeb512

カスタム投稿タイプを作成するために「カスタム投稿タイプUI」プラグインを使用している場合は、[アーカイブあり]オプションをTrueに変更してください。カスタム投稿タイプを手動で作成した場合は、アレイ。

それから、あなたが "Movies"という新しいカスタム投稿タイプを追加し、それからそれに関連する新しい分類を追加し、そのスラッグを "genres"と呼び、その新しい分類をそのスラッグを "horror"と呼び、 "Horror"用の特定のテンプレートを作成したい場合は、 "taxonomy- {taxonomy} - {term} .php"という名前のテンプレートを作成できます。

この場合、テンプレートの名前はtaxonomy-genres-horror.phpになります。

0