web-dev-qa-db-ja.com

サブカテゴリ用の異なるテンプレート

カテゴリとサブカテゴリに別のテンプレートを使用したいカテゴリテンプレートはcategories.phpに設定されています。サブカテゴリテンプレートをsubcategories.phpからロードすることは可能ですか。

1
TBHM admin

テンプレート階層にはフィルタがあります すべてのタイプのテンプレート用。ここではcategory_templateを使用し、現在のカテゴリが親を持っているかどうかを確認し、その場合はsubcategory.phpファイルをロードします。

function wpd_subcategory_template( $template ) {
    $cat = get_queried_object();
    if( 0 < $cat->category_parent )
        $template = locate_template( 'subcategory.php' );
    return $template;
}
add_filter( 'category_template', 'wpd_subcategory_template' );
2
Milo

機能を追加するためにコードを編集しました。子カテゴリごとに異なるテンプレートを作成したい場合があります。たとえば、カテゴリが次のようになっているとします。

  • 大陸
      • シティ

そして、あなたは都市用に別のテンプレートが必要です。まず、市に子供がいるかどうかを調べ、そうでない場合は市のテンプレートを呼び出します。コードの残りの部分は、カテゴリに親があるかどうかを確認することです。

// Different template for subcategories
function wpd_subcategory_template( $template ) {
    $cat        = get_queried_object();
    $children   = get_terms( $cat->taxonomy, array(
        'parent'     => $cat->term_id,
        'hide_empty' => false
    ) );

    if( ! $children ) {
        $template = locate_template( 'category-country-city.php' );
    } elseif( 0 < $cat->category_parent ) {
        $template = locate_template( 'category-country.php' );
    }

    return $template;
}
add_filter( 'category_template', 'wpd_subcategory_template' );
1
user3751604