web-dev-qa-db-ja.com

Functions.phpからスクリプトをエンキューするためのis_single()の使用に関する問題

単一の投稿ページにスクリプトを追加するだけではうまくいきません。 is_single()を使用して特定のスクリプトを含めたり除外したりする必要がありますが、どちらを試してもうまくいきません。

私はカスタムシングルポストテンプレートの上にテンプレートタグを持っています...

<?php /* Template Name: Single Default */ ?>

そしてこれを使ってfunctions.phpからスクリプトを呼び出します。

if (!is_admin()) {
 if (is_single()) {
    wp_register_script( 'jquery-scroll', get_bloginfo('stylesheet_directory').'/libs/jquery.jscrollpane.min.js' );
wp_enqueue_script( 'jquery-scroll' );
 }
}
2
Pollux Khafra

これはいくつかの異なる問題の1つである可能性があります。

1.間違ったフック/フックされていない

wp_enqueue_scriptwp_enqueue_scriptsにフックされていることを確認する必要があります。さもなければ、呼び出しは遅すぎるか(おそらくこの場合は?)早すぎるでしょうか。

これを試してみてください(あなたのPHPも少し片付けました:

function wpse53364() {
    if( !is_admin() && is_single() ) {
        wp_register_script( 'jquery-scroll', get_bloginfo('stylesheet_directory').'/libs/jquery.jscrollpane.min.js' );
        wp_enqueue_script( 'jquery-scroll' );
    }
}
add_action( 'wp_enqueue_scripts', 'wpse53364' );

2.誤ったテンプレートの使用

質問からは分かりませんが、「カスタムシングル投稿テンプレート」にsingle.phpを使用している場合は、その「Template Name:...」ヘッダーを使用しないでください。 WordPress テンプレートの階層構造 は、どのファイルを使うべきかを自動的に認識します。

3.間違ったコンディショナルタグ

カスタムページテンプレートを使用しているという事実は、POSTSとは対照的に、このスクリプトを使用してスクリプトをPAGESにエンキューしようとしているのかどうかという疑問に思います。その場合は、is_single()is_page()またはis_singular( 'page' )に置き換える必要があります。

8
mrwweb