web-dev-qa-db-ja.com

単一のテンプレートを複数のカスタム投稿タイプに割り当てますか?

私は自分のテーマで最初にsingle-photography.phpとして作成したものと同じテンプレートで表示したいカスタム投稿タイプがいくつかあります。

このテンプレートを複数のカスタム投稿タイプに割り当てる方法はありますか?

私はおそらくget_post_type()に基づく条件付きインクルードを使ってsingle.phpファイル内でこれを実行できることを理解していますが、もっと良い方法があるのか​​どうか疑問に思いますか?

4
waffl

あなたはtemplate_includeをフィルタリングし、あなた自身の条件に応じて戻り値としてあなたのカスタムテンプレートを渡すことができます。

テストされていないサンプルコード

add_filter( 'template_include', function( $template ) 
{
    // your custom post types
    $my_types = array( 'photography', 'painting' );
    $post_type = get_post_type();

    if ( ! in_array( $post_type, $my_types ) )
        return $template;

    return get_stylesheet_directory() . '/single-photography.php'; 
});
7
fuxia