web-dev-qa-db-ja.com

特定のページに対してのみスタイルシートを条件付きでエンジンする方法

始める前に、ページ/投稿コンテンツに基づいて条件付きでスクリプトをエンキューする方法をターゲットとした、本当に優れた記事がいくつかあることを認めたいと思います。

これらは素晴らしいですが、彼らは私がやりたいことよりもはるかに高度です。

答えは組み込みのis_page()関数( codex )を使っているように感じますが、それを使おうとするとサイトが壊れるか、あるいはうまく動作しません。

条件付きロジックを間違った場所で実行しているだけだと思います。

これが私のfunctions.phpに追加しようとしたものです:

function wpse39130_register_more_stylesheets() {
    wp_register_style( 'stylesheet_name', get_stylesheet_directory_uri() . '/stylesheet.css' );
}
add_action( 'init', 'wpse39130_register_more_stylesheets' );

function wpse39130_conditionally_enqueue_my_stylesheet() {
    // only enqueue on product-services page slug
    if ( is_page( 'products-services' ) ) {
        wp_enqueue_style( 'stylesheet_name' );
    }
}
add_action( 'wp_enqueue_scripts', 'wpse39130_conditionally_enqueue_my_stylesheet' );

その条件付き部分を削除すると、スタイルシートは正常にエンキューされたので、それが機能することがわかりました。

10
Evan Mattson

私はあなたのコードを私の開発環境にコピーし、ページ名以外は何も変更せず、それはうまく機能します。エンキューされていないこと、間違っていると指摘されていること、またはページの名前が間違っていないことなどを確認していますか。

4
mor7ifer

あなたが持っているものは正しいです - あなたはただそれを間違った行動に引っ掛けています。 "init"の代わりに "wp"アクションを試してください。 initが実行されると、is_page()はまだ正しく動作しません。

編集: 私は間違っている。私はあなたがinitにフックしたadd_my_stylesheetを持っていると思ったが、あなたはそうしませんでした。 is_pageはenqueue_scriptsアクションから機能するはずです。すみません...続けて...

2
MathSmath