特定のページテンプレートのwpエンキュースタイル


24

テーマを作成中です。ページテンプレートを使用してランディングページを追加したいと思います。特定のページテンプレートのスタイルまたはjsをキューに登録する方法を示す場所が見つかりません。助言がありますか。例 ランディングページ1-Landing-page-template-one.phpには、ブログやホームページとはまったく異なるスタイルとjsが必要です。

回答:


29

多くのWP開発を行う予定がある場合は、このページをブックマークしてください:http : //codex.wordpress.org/Conditional_Tags

他の答えは機能しますが、条件はページスラッグ(myurl.com/this-is-the-slug)に依存します。より信頼性の高い方法(IMO)、およびこの場合に適合する方法は、is_page_template('example-template.php')代わりに条件付きチェックを使用することです。


22

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()


ショーン、大歓迎です。
エドワードケイシー

2
is_page_template()ページスラッグは簡単に変更できるので、使用することが望ましいと思います。この解決策はうまく機能しますが、スラッグが変更された場合は壊れます。将来問題が発生した場合は、kchjrのソリューションをご覧ください。
BODA82

ありがとうございました!これにつまずいた他の人にとって:条件文is_pageはアクションに付随する関数の中になければならず、add_action文自体をラップしてはいけません。add_actionステートメントを条件でラップする場合、ページの処理の早い段階で、それがどのページであるかを知ることになります。
Hendeca

2

ページテンプレートがテーマのサブディレクトリにある場合(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' );

参照:公式ドキュメント


is_page_template ()チェックはエンキュー関数の内側であり、その周りではないことに言及してくれてありがとう。
gregn3

1

他の回答で提供された解決策が機能していたかどうかはわかりませんが、(受け入れられた回答がないので!)正しい答えは現在のようです:

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' );

is_page_template()は、https: //developer.wordpress.org/reference/functions/is_page_template/によると、ループの外側でのみ機能します


上記のドキュメントによれば、ループ内で使用することができない
Selrond

ループ。それの私が言ったこと... *赤面*
richplane

1

テンプレート名がテンパーであり、そのページにブートストラップをロードして、次のように特定のページテンプレートのスタイルをキューに登録するとします。

function.phpファイルに移動して、次のような状態を確認します。

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');
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.