web-dev-qa-db-ja.com

カスタム投稿タイプ分類テンプレート

私はカスタム投稿タイプportfoliotaxonomyをもちろん作成しました。

function taxonomies_portfolio() {
    $labels = array(
        'name'              => _x( 'Portfolio categories', 'taxonomy general name' ),
        'singular_name'     => _x( 'Portfolio categories', 'taxonomy singular name' ),
        'search_items'      => __( 'Query portfolio categories' ),
        'all_items'         => __( 'All portfolio categories' ),
        'parent_item'       => __( 'Parent category' ),
        'parent_item_colon' => __( 'Parent category:' ),
        'edit_item'         => __( 'Edit portfolio category' ), 
        'update_item'       => __( 'Update portfolio category' ),
        'add_new_item'      => __( 'Add Edit portfolio category' ),
        'new_item_name'     => __( 'New portfolio category' ),
        'menu_name'         => __( 'Categories' ),
    );
    $args = array(
        'labels' => $labels,
        'hierarchical' => true,
        'rewrite' => true
    );
    register_taxonomy( 'portfolio_category', 'portfolio', $args );
}
add_action( 'init', 'taxonomies_portfolio', 0 );

単一のカテゴリのすべての項目を表示するために 1テンプレートファイルを作成することは可能ですか? taxonomy.phpを作成しようとしましたが、成功しませんでした。使用する正しいテンプレート名は何ですか?

2
p2or

テンプレート階層 のWordpress Codexページに従って、taxonomy-portfolio_category.phpという名前のテンプレートファイルを作成します。 WordPressはそれを使ってその分類のアーカイブを表示します。分類法の特定の用語のテンプレートを作成するためにtaxonomy-portfolio_category-{term_name}.phpを使用することもできます。

3
Manny Fleurmond

同じカスタム投稿タイプに対して複数の分類法のテンプレートを管理するために、WordPressの標準のテンプレートを使用する必要はありません。

1)portfolio CPTと1)pcat分類法、および3)「サイト」、「アプリ」、および「デザイン」という用語がこの分類法で作成されているとします(ここではスラグが表示されています)。

ケース1: /これらのpcatタクソノミーのいずれに対しても同じテンプレートを表示することができます。単一のportfolioレコードを一様な方法で示すコードと同じ単一のportfolio-signle.phpテンプレートを使用するだけです。

ケース2: /そのレコードに割り当てられたportfolio分類法の用語( 'sites'、 'apps'、 'design'、 'whatever')に応じて、各pcat CPTレコードに対して異なるテンプレートを表示するとします。

同じportfolio-signle.phpと、各pcat用語に対する追加の部分テンプレートを使用して、これを行うことができます。

あなたのportfolio-signle.phpはこのコードを保持しなければなりません:

<?php
get_header();
// Here you get the particular record of the `portfolio` CPT.
global $post;
// Get the array of 'pcat' taxonomy terms attached to the record
// and take the slug of first term only (just for brevity)
$txslug = get_the_terms($post, 'pcat')[0]->slug;
// Dynamically prepare the file name
$filename = get_template_directory() . '/partials/_portfolio-single-'.$txslug.'.php';
// Check if the file exists & readable
if (is_readable($filename)) {
    // The case when you  created the sub-template partial for the particular `pcat` term.
    include get_template_directory() . '/partials/_portfolio-single-'.$txslug.'.php';
} else {
    // The case for all other `pcat` taxonomy terms.
    include get_template_directory() . '/partials/_portfolio-single-other.php';
}
get_footer();

上記のコードからわかるように、あなたはあなたがあなたの投稿に割り当てるそれぞれのpcat分類学用語のためのそれぞれの部分的なサブテンプレートを作成しなければなりません。

または/および/partials/portfolio-single-other.phpを作成して、統一的に見たいすべての用語を処理します。

これはあなたのテーマファイルをきちんと整理された状態に保ちます、そして、無料のコードコストのためにあなたが異なった分類学用語の外観を柔軟に管理することを可能にします。

注意:global $post;テンプレートの先頭に'/partials/_portfolio-single-'.$txslug.'.php'を再宣言することを忘れないでください。追加費用なしで、表示したいCPTオブジェクトにアクセスできます。

0
bob-12345