web-dev-qa-db-ja.com

カテゴリページのカスタム投稿タイプ

通常のWordPressカテゴリを使用するカスタム投稿タイプを使用しています。
自分のカスタム投稿タイプを表示するようにカテゴリテンプレートを変更することができます。

問題は、一度これを実行すると、通常のブログ投稿も影響を受けることです。

もちろん、通常のブログ投稿または投稿の種類を1つのカテゴリに限定し、そのカテゴリでのみ機能するcategory-ID.phpを作成することもできます。

しかし、もっと柔軟な解決策があるかどうか私は疑問に思いますか?
投稿タイプに固有のカテゴリテンプレート、つまり投稿を表示するカテゴリテンプレート、カスタム投稿タイプを表示するカテゴリテンプレートなどを作成できますか。

これは可能ですか。そうでなければ、これを回避する最善の方法は何ですか?

6

カスタム分類のカスタム投稿タイプの場合は、その分類のテンプレートを作成できます。カスタム分類テンプレートはtaxonomy-{taxonomy}.phpという名前になります。たとえば、分類法が「cooking-categories」と呼ばれている場合は、ファイルの名前をtaxonomy-cooking-categories.phpにします。

特別な分類アーカイブのためのテンプレートファイルに関するより多くの情報はここのコーデックで見つけることができます: http://codex.wordpress.org/Template_Hierarchy#Custom_Taxonomies_display

6
eileencodes

以下のように投稿の種類に基づいて指定できます。通常の投稿の場合は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を使って表示されます。

お役に立てれば

4
Bainternet

こんにちは @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.phppost-foo.phppost-post.phpのようなファイル名の形式であなた自身のテンプレートファイル名階層を作成することができない理由があるならば?このようなコードはそれのためにそれをすることができます:

<?php include("post-{$post->post_type}.php"); ?>
1
MikeSchinkel