私はテーマの過程にあります。ページテンプレートを使ってランディングページを追加したいと思います。特定のページテンプレートのstyleまたはjsをエンキューする方法を示す場所が見つからない。助言がありますか。例ランディングページ1 - landing-page-template-one.phpは、ブログやホームページとはまったく異なるスタイルとjsを必要とします。
たくさんのWP開発をするつもりなら、このページをブックマークしてください: http://codex.wordpress.org/Conditional_Tags
他の答えはうまくいくが、条件はあなたのページスラッグ(myurl.com/this-is-the-slug)に頼ることは決して変わらない。より信頼性の高い方法(IMO)、およびこの場合に適合する方法は、代わりにis_page_template('example-template.php')
条件付きチェックを使用することです。
ページ全体のエンキューステートメントの一部として、ページ固有のスタイル/スクリプトの周囲にis_page( 'landing-page-template-one' )
条件を使用できます。
function my_enqueue_stuff() {
if ( is_page( 'landing-page-template-one' ) ) {
/** Call landing-page-template-one enqueue */
} else {
/** Call regular enqueue */
}
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );
他のページなどのために、さらに多くのelseif
を上記にチェーンすることもできます。
リファレンス: 関数リファレンス - is_page()
ページテンプレートがテーマのサブディレクトリにある場合(WP 3.4以降)、フォルダ名とスラッシュをテンプレートのファイル名の前に付けます。
is_page_template( 'templates/about.php' );
そのため、関数全体は次のようになります。
function my_enqueue_stuff() {
if ( is_page_template( 'landing-page-template-one' ) ) {
/** Call landing-page-template-one enqueue */
} else {
/** Call regular enqueue */
}
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );
参照: 公式ドキュメンテーション
テンプレート名が temper で、そのページにブートストラップをロードしたいとします。そうすれば、次のように特定のページテンプレートにスタイルをエンキューできます。
function.php fileに行き、次のように状態を確認してください。
function temper_scripts() {
if(basename(get_page_template()) == 'temper.php'){
wp_enqueue_style('bootstrap', '//stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css');
}
}
add_action('wp_enqueue_scripts', 'temper_scripts');
他の答えで提供されている解決策がうまくいったかどうかはわかりませんが、(受け入れられた答えがないので!)それは現在正しい答えのようです。
function my_enqueue_stuff() {
if ( get_page_template_slug() == 'landing-page-template-one.php' ) {
wp_enqueue_script('my-script-handle', 'script-path.js', ... );
}
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );
https://developer.wordpress.org/reference/functions/is_page_template/ によると、is_page_template()はループの外側でのみ機能します。