ページテンプレートをショートコードにロードしようとしています。これにより、コンテンツをどこにでも簡単にロードできます。
私はいくつかの調査を行い、多くの人々がこのコードが彼らのために働いたと言いました、しかし、何故かこれは私がただ空白のページを得るので私のテンプレートを正しくロードしないようです。
ショートコードがプレーンテキストとして表示されないため、実行されていることがわかっているので、テンプレートのロード方法に問題があると思います。
どんな助けでも大歓迎です。
public function register(){
add_shortcode( 'sponsor_main_page', array($this,'my_form_shortcode') );
$RegistrationFormId = esc_attr( get_option( 'ik_form_id' ) );
}
function my_form_shortcode() {
ob_start();
get_template_part( 'template-sponsors.php' );
return ob_get_clean();
}
get_template_part
は、ファイル名ではなく、スラッグを最初のパラメーターとして使用します。
だからそれはする必要があります:
get_template_part( 'template-sponsors' );
そして、さらに詳しく...この関数は2つのパラメータを取ります。
get_template_part(string $ slug、string $ name = null)
その中に、ファイルの名前は次のように構築されています:
if ( '' !== $name )
$ templates [] = "{$ slug}-{$ name} .php"; $ templates [] = "{$ slug} .php";
ご覧のとおり、.php
の部分は自動的に追加されます。したがって、コードはtemplate-sponsors.php.php
というファイルをロードしようとしますが、そのようなファイルはありません。
get_template_part()
のパラメーターに.phpを追加しているため、発生している可能性があります。これは私があなたの質問のコードを書く方法です:
この例が機能するための前提条件:
template-parts
というフォルダーを作成します。template-sponsors.php
という名前の新しいファイルを作成します[sponsor_main_page]
であることを前提としていますfunctions.phpに配置するコード:
function custom_theme_load_sponsors_template() {
ob_start();
get_template_part( 'template-parts/template-sponsors' );
return ob_get_clean();
}
add_shortcode( 'sponsor_main_page', 'custom_theme_load_sponsors_template' );