web-dev-qa-db-ja.com

複数のカテゴリに投稿する

私はいくつかのコードに対して私の頭を粉砕しています。ここに状況があります:私は3つの異なるカテゴリーに一つの記事を持っています、この記事はsingle1.phpの "category 1"、single2.phpの "category 2"そしてsingle3.phpの "category 3"に見えるはずです。

明らかに3つのsingle.phpページは内部に異なるテンプレートを持っています。例えばsingle1.phpは写真とthe_content()を示しています。 single2.phpは写真とコメントを表示します。 single3.phpはレビューを表示します。

私はsingle.phpで私はif/elseを使用することができることを知っていますが、同じ投稿が3つの異なるカテゴリにあるかどうか私は理解できません。

何か助けてください?

4
Mark

カテゴリ固有にする代わりに、投稿フォーマットを使用してさまざまなコンテンツテンプレートを使用することができます。 single.phpでは、書くことができます

<?php get_template_part( 'content', get_post_format() ); ?>

それから異なる投稿フォーマットを作成してください

add_theme_support( 'post-formats', array( 'withpictures', 'withcomments' ) );

次に、異なる投稿テンプレートcontent-withpictures.php、content-withcomments.phpを作成します。

コンテンツを作成するときは、選択した投稿フォーマットによってテンプレートが決まります。

2
mirage

'single_template'にはフィルタフックを使うことができます。 single-cat1.php、single-cat2.php、single-cat3.phpの作成

function template_change( $template ){
    if( is_single() && in_category('cat1') ){
        $templates = array("single-cat1.php");
    } elseif( is_single() && in_category('cat2') ){
        $templates = array("single-cat2.php");
    } elseif( is_single() && in_category('cat3') ){
        $templates = array("single-cat3.php");
    }
    $template = locate_template( $templates );
    return $template;
}
add_filter( 'single_template', 'template_change' ); //'template_include'/'single_template'
3

Template-single-cat1.php、header.phpを使用してスタイルシートを変更する必要がある場合は、header.phpで変更できます

<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/ca1.css">
0
mikhoi