web-dev-qa-db-ja.com

プラグインからカスタム投稿タイプ専用のテンプレートを使用する方法

私は このチュートリアル カスタム投稿タイプ(プラグイン内)について作者がやり方を説明していますカスタム投稿タイプ専用のテンプレートの使用を強制する。著者はこう述べている:

以下のコードは、現在のテーマディレクトリでテンプレートsingle-movie-reviews.phpを検索します。見つからない場合は、テンプレートのプラグインディレクトリを調べます。これは、プラグインの一部として提供されています。 template_includeフックはデフォルトの振る舞いを変更し特定のテンプレートを強制するために使われました。

ステップ1:このコードを私のplugin-name.phpファイルに追加しました

add_filter( 'template_include', 'include_reviews_template', 1 );
function include_reviews_template(){
    if ( get_post_type() == 'reviews' ) {
        if ( is_single() ) {
            // checks if the file exists in the theme first,
            // otherwise serve the file from the plugin
            if ( $theme_file = locate_template( array( 'single-movie-reviews.php' ) ) ) {
                    $template_path = $theme_file;
                } else {
                    $template_path = plugin_dir_path( __FILE__ ) . '/templates/single-movie-reviews.php';
            }
        }
    }
    return $template_path;
}

ステップ2:single- {custom-post-type} .phpファイルを作成してください。

次に、必要なsingle-movie-reviews.phpファイルを作成し、それを'/my-plugin/templates/'ディレクトリに追加しました。

作者は以下を付け加えます:

注:新しいページを作成する必要がありますダッシュボードから新しく作成したテンプレートを使用してください。

問題

  1. ページテンプレートがダッシュボードに表示されない
  2. カスタム投稿タイプを使用して作成した投稿にアクセスしたとき、それはdo showプラグインのページテンプレートを使用している投稿です。 ただし ... 1ページおきに(つまり、ページNOT CPTを使用) show 空白の白い画面(あたかも使用する適切なテンプレートが見つからないかのように)。

だから私は何を間違っているのですか?

お知らせ下さい

3
sleeper

この行を変更してください。

function include_reviews_template(){

これに:

function include_reviews_template( $template_path ) {

get_post_type() == 'reviews'がfalseのときは、未設定の変数($template_path)を返しています。この変更はWordPressによって関数に渡された値を送るべきです。

3