web-dev-qa-db-ja.com

プラグインからページテンプレートを登録する

私はどのようにしてプラグインからページテンプレート(そしてCSSや画像のような全ての関連するアセット)を正しく登録するかを考え出しています。基本的に、私はテーマの外側に住みたいランディングページを作成しました、それで私はそれを複数のウェブサイトで使うことができます。

私のコードは次のとおりです。

add_filter( 'page_template', 'custom_page_template' );
function custom_page_template( $page_template )
{
    $page_template = dirname( __FILE__ ) . '/custom-page-template.php';
    return $page_template;
}

しかし、私はWordPressの中にページテンプレートを見ていません。

1
dcolumbus

あなたはpage_templateが何をするのか誤解しています。 どこかに "現れる"ような、そしてあなたが使える新しいテンプレートを作成することはありません。テーマによって提供されたpage.phpテンプレートを置き換えます。

私はあなたが欲しいのはtemplate_redirectだと思います:

function custom_page_template( $page_template ) {
  if (is_home()) {
    get_header();
    echo 'do stuff';
    get_footer();
  }
}
add_filter( 'template_redirect', 'custom_page_template' );

またはtemplate_include

function custom_page_template( $page_template ) {
  if (is_home()) {
    $page_template = plugin_dir_path( __FILE__ ) . 'custom-page-template.php';
    return $page_template;
  }
}
add_filter( 'template_include', 'custom_page_template' );
1
s_ha_dum