0

これは、2 つ (またはそれ以上) のカテゴリがあり、それぞれに 5 つ (またはそれ以上) のサブカテゴリがあるシナリオです。

cat1 – 野菜 (subcat: 1) にんじん 2) トマトなど cat2 – 果物 (subcat: 1) りんご 2) オレンジなど

カテゴリごとに単一のテンプレートを作成しました:single-veg.php、single-fruit.php ..

それで、サブカテゴリ「veg」、「carrot」などのカテゴリに属する​​すべての投稿にsingle-veg.phpをロードするための正しい関数は何か知っていますか??

これは私が採用したものですが、もっと良い方法があるに違いないと思います..そしてもちろん、コードに何か問題があることに気付いた場合...私は初心者です。

/** Get Post Category and sub category */

function post_is_in_descendant_category( $cats, $_post = null )
{
    foreach ( (array) $cats as $cat ) {
        // get_term_children() accepts integer ID only
        $descendants = get_term_children( (int) $cat, 'category');
        if ( $descendants && in_category( $descendants, $_post ) )
            return true;
    }
    return false;
}

/** Conditional Templates for Single posts */

function template_change( $template ){

    if( is_single() && (post_is_in_descendant_category('12')) || in_category('12') ){
        $templates = array("single-veg.php");
    }
   elseif( is_single() && (post_is_in_descendant_category('17')) || in_category('17') ){
        $templates = array("single-fruit.php");
    } elseif( is_single() && in_category('articles') ){
        $templates = array("single-articles.php");
    }
    $template = locate_template( $templates );
    return $template;
}

add_filter( 'single_template', 'template_change' ); //'template_include'/'single_template'
4

1 に答える 1