通常のWordPressカテゴリを使用するカスタム投稿タイプを使用しています。
自分のカスタム投稿タイプを表示するようにカテゴリテンプレートを変更することができます。
問題は、一度これを実行すると、通常のブログ投稿も影響を受けることです。
もちろん、通常のブログ投稿または投稿の種類を1つのカテゴリに限定し、そのカテゴリでのみ機能するcategory-ID.phpを作成することもできます。
しかし、もっと柔軟な解決策があるかどうか私は疑問に思いますか?
投稿タイプに固有のカテゴリテンプレート、つまり投稿を表示するカテゴリテンプレート、カスタム投稿タイプを表示するカテゴリテンプレートなどを作成できますか。
これは可能ですか。そうでなければ、これを回避する最善の方法は何ですか?
カスタム分類のカスタム投稿タイプの場合は、その分類のテンプレートを作成できます。カスタム分類テンプレートはtaxonomy-{taxonomy}.php
という名前になります。たとえば、分類法が「cooking-categories」と呼ばれている場合は、ファイルの名前をtaxonomy-cooking-categories.php
にします。
特別な分類アーカイブのためのテンプレートファイルに関するより多くの情報はここのコーデックで見つけることができます: http://codex.wordpress.org/Template_Hierarchy#Custom_Taxonomies_display
以下のように投稿の種類に基づいて指定できます。通常の投稿の場合はcategory.php
を、カスタムの投稿の種類の場合はyour-custom-type-category.php
を指定して、一番上の通常のcategory.phpに追加します。
<?php if (have_posts()){
the_post();
if( 'your_custom_type' == get_post_type( $post ) ) {
rewind_posts();
get_template_part('your-custom-type-category');
exit();
}
rewind_posts();
}
?>
そして今、カテゴリが要求されたときはいつでもあなたのカスタム投稿タイプをチェックし、見つかったならそれはテンプレートとしてあなたのyour-custom-type-category.php
を使い、すべての通常の投稿は変更なしでcategory.php
を使って表示されます。
お役に立てれば
こんにちは @Kelvin Jayanoris:
このように、 Loop の中に$post->post_type
ステートメントを使用してif..elseif
の値をテストすることができないのには、理由があります。
<?php if ($post->post_type=='foo'): ?>
Put HTML for 'foo' post type here...
<?php else if ($post->post_type=='bar'): ?>
Put HTML for 'bar' post type here...
<?php else if ($post->post_type=='post'): ?>
Put HTML for 'post' post type here...
<?php endif; ?>
それとも、もしあなたのループ内でpost-foo.php
、post-foo.php
、post-post.php
のようなファイル名の形式であなた自身のテンプレートファイル名階層を作成することができない理由があるならば?このようなコードはそれのためにそれをすることができます:
<?php include("post-{$post->post_type}.php"); ?>