web-dev-qa-db-ja.com

ページのような投稿のカスタムテンプレート:page- {id} vs single- {id}

正しく理解していれば、そのページにアクセスしたときに表示されるpage-{my_page_title_or_id)というファイルを作成することで、そのページのカスタムテンプレートを作成できます。ヘッダーのコメントにTemplate Name: My Page Typeを追加することで、ページ用のカスタムテンプレートを作成することもできます。

ただし、投稿の状況は大きく異なります。私が言うことができる限り、single-{post_title_or_id)と呼ばれるファイルを作成することは与えられた記事のためにそのファイルの表示を強制しません。何もしないようです。

私はカスタム投稿タイプを作成し、そのインスタンスをsingle-{post_type_name}で表示できることを理解しています。これは素晴らしいことです。ただし、特定の1つの投稿に対してのみテンプレートを作成する場合は、やり過ぎになります。そのため、投稿のid/titleが表示したいonleと一致したときの条件付きロジックを含める必要があります。

私はここに何かが足りないのですか?私の状況理解は正しいですか?与えられたタイトル/ IDを持つ投稿のカスタムビューを表示する最も簡単な方法を誰かに教えてください。

3
Robin

A)シングル投稿テンプレート:single-{post-type}-{post-name}.php

get_single_template() 関数をチェックするのは有益です。

そこで、次のようなテンプレートの可能性があります。

"single-{$object->post_type}-{$object->post_name}.php"
"single-{$object->post_type}.php"
"single.php"

WordPress 4.7では、この部分が追加されます。

"single-{$object->post_type}-{$name_decoded}.php"    

テンプレートの名前の{$object->post_type}部分を忘れてしまったようです。

例:

スラッグhello-worldを持つpostsingleテンプレート名:

single-post-hello-world.php

B)カスタム単一投稿テンプレート

WordPress 4.7のもう1つの機能はカスタム単一投稿テンプレートのサポートです。

チケットをチェックアウトする #18375 詳細については/。

例:

テンプレートファイルを作成して、この新機能をテストしました。現在のテーマディレクトリにあるtpl-wpse-test.php

<?php
/**
 * Template Name:      WPSE Template Test
 * Template Post Type: post
 */
 get_header();
 ?><div id="main"> WPSE Template Test - Success! ;-) </div><?php
 get_footer();

それから、以下のメタボックスは対応する投稿タイプのバックエンドに自動的に現れます。

Metabox 

マルチポストタイプのサポートもあります。

 * Template Post Type: posttype1, posttype2, posttype3

しかし、featured imageメタボックスを取得するために使用するように、add_theme_support()を使用する必要はありません。

5
birgire