web-dev-qa-db-ja.com

特定のページにスクリプトをロードする

子テーマでは、スクリプトとスタイルファイルをロードするfunctions.phpファイルを作成しました。コードは以下のとおりです。 admin以外のすべてのページにライブラリとスクリプトをロードするセクション、つまり最初の2つの機能は、期待どおりに機能します。ただし、特定のページのスクリプトを読み込むように設計されている3番目の関数は読み込まれません。私の問題はページ条件の指定に関係しているようです。登録とエンキューのコードの残りの部分は、管理ページ以外のページのスクリプトをロードする一般的な関数に配置されている場合に機能します。私はこれまで私が使ったアプローチがうまくいかない理由を示す例を見つけることができないことを調査しました。ページIDとページ名を入れ替えましたが、役に立ちません。

問題の原因についてのどんな提案も大いに感謝されるでしょう。

ありがとう。

    <?php

function scripts () {
    if ( !is_admin() ) { 
        wp_enqueue_script('jquery');
        wp_register_script('jqueryUI', "path", array('jquery')); //register custom UI library
        wp_enqueue_script('jqueryUI');
        wp_register_script('popUp1', ("path"), array('jquery', 'jqueryUI'));
        wp_enqueue_script('popUp1');
        wp_register_script('popUpText', 'path', array('jquery', 'jqueryUI'));
        wp_enqueue_script('popUpText');
    }
}

add_action('init', 'scripts');

//INSERT CSS    files into the header
function styles () {
    if ( !is_admin() ) {
        wp_register_style('jqueryUIcss', "path");
        wp_enqueue_style('jqueryUIcss');
        wp_register_style('valuecss', "path");
        wp_enqueue_style('valuecss');
    }
}   
    add_action('init', 'styles');

//Add scripts for pop ups on "how to estimate value" page
function pagePopUps1 () {
    if ( is_page(16)) { 
        wp_register_script('popUpVideo1', "path", array('jquery', 'jqueryUI'));
        wp_enqueue_script('popUpVideo1');

    }
}

add_action('init', 'pagePopUps1');  



//End of file
?>

簡潔にするために、私はsrcを削除しましたが、これらは検証されており、問題の原因ではありません。

2
dorich

スクリプト登録をinitアクションに移動し、エンキューをwp_print_scriptsにフックされたコールバックに移動することをお勧めします。

例えば。

add_action( 'init', 'register_those_scriptsNstyles' );

function register_those_scriptsNstyles() {
    wp_register_script( .. your script params .. );
    wp_register_style( .. your style params ..  );

    ..etc..
}

add_action( 'wp_print_scripts', 'enqueue_those_scriptsNstyles' );

function enqueue_those_scriptsNstyles() {

    if( !is_page( 'some-page' ) ) // If it's not the given page, stop here
        return;

    wp_enqueue_script( .. your script params .. );
    wp_enqueue_style( .. your style params .. );

    ..etc..
}

注:フック名にもかかわらず、wp_print_scriptsもスタイルをエンキューするのに適しているはずです。重要な要素は、使用するフックが条件付きテンプレートタグが設定されるのに十分遅く発生するようにすることです。 is_pageis_categoryなど.
もしそうでなければ、代わりにwp_headを試してください。 add_action( 'wp_head', 'your-callback' )

EDIT:管理者側と同じように、スタイルの場合はパブリック側がスタイルに対するアクションを持ちます。これはwp_print_styles ..ですそこにスタイル)。

それが役立つことを願っています..

2
t31os

そのような場合に確認する最初の事柄:

  • フックされた機能が適切に起動している。
  • 期待される結果に評価される条件です。

関数にvar_dump( is_page(16) );を追加して、これらが期待通りに動作しているかどうかを確認してください。

0
Rarst