私はカスタム投稿タイプportfolio
とtaxonomy
をもちろん作成しました。
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
を作成しようとしましたが、成功しませんでした。使用する正しいテンプレート名は何ですか?
テンプレート階層 のWordpress Codexページに従って、taxonomy-portfolio_category.php
という名前のテンプレートファイルを作成します。 WordPressはそれを使ってその分類のアーカイブを表示します。分類法の特定の用語のテンプレートを作成するためにtaxonomy-portfolio_category-{term_name}.php
を使用することもできます。
同じカスタム投稿タイプに対して複数の分類法のテンプレートを管理するために、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オブジェクトにアクセスできます。