Functions.phpのis_pageを使用して単一のページでカスタムスクリプトを実行しようとしてもまったく機能しません。私はload_gh_boardsと呼ばれる関数を持っていて、それはスクリプトをenququeするでしょう、特定のページでのみ(79):
function load_gh_boards() {
if( is_page(79) ){
wp_register_script( 'gh-jobs-board', get_bloginfo( 'template_directory' ) . '/js/gh-jobs-board.js', array(), '1.0', true );
}}
add_action('wp_enqueue_script', 'load_gh_boards');
これは私のすべてのスタイルとスクリプトをロードしているテーマエンキュー関数の中にあります。
function theme_enqueue() {
if ( ! is_admin() ) {
wp_register_style( 'main-style', get_bloginfo( 'template_directory' ) . '/css/style.css?' . time() );
wp_enqueue_style( 'main-style' );
wp_enqueue_script( 'jquery' );
wp_register_script( 'main-vendor', get_bloginfo( 'template_directory' ) . '/js/vendor.js', array(), '1.0', true );
///etc...
wp_enqueue_script( 'main-vendor' );
wp_enqueue_script( 'main-script' );
///load_gh_boards
}
検索結果はありません。少しでも助けまたは洞察力があれば幸いです。
is_page(79)
は、現在のメインクエリがページ、具体的には79ページであるかどうかを尋ねています
しかし、主な問い合わせはまだ行われていません
この関数は、メインループの内側、あるいは少なくともテンプレートの内側で呼び出す必要がありますが、init
フックはこれには早すぎます。
代わりに、必ず本体クラスを使用して、すべてのページにスクリプトをロードしてください。次に、bodyタグにCSSクラスpage-id-79
があるかどうかを確認します。
init
フックにエンキューしていません、あなたはwp_enqueue_scripts
フックにエンキューすることを意図していますif ( is_admin() ) return;
pji-main-vendor
theme_enqueue
も非常に一般的な関数名です、あなたもその接頭辞を付けるべきですwp_enqueue_script
を使用して、登録とエンキューを同時に行うことができます。その関数にすべてを渡すのであれば、wp_register_script
を呼び出す必要はありません。これは今私にとって絶対に働いています:
add_action('get_header', function() {
if(is_page('566')) {
function sp_enqueue_script() {
wp_enqueue_script(
'sp-custom-script',
get_stylesheet_directory_uri() . '/assets/js/sp_script.js',
array( 'jquery' ), '1.0', true
);
}
add_action( 'wp_enqueue_scripts', 'sp_enqueue_script' );
}
});
is_page はメインクエリがまだロードされていないため、functions.phpで機能しません。そのため、ヘッダーがロードされるのを待ちます。
wp_enqueue_script
フックの最後のブール値は、スクリプトがフッターでキューに登録されるため、より高速に実行されます。
function theme_enqueue() {
if ( ! is_admin() ) {
wp_register_script( 'main-script', get_bloginfo( 'template_directory' ) . '/js/script.js', array(), '1.0', true );
wp_register_script( 'gh-jobs-board', get_bloginfo( 'template_directory' ) . '/js/gh-jobs-board.js', array(), '1.0', true );
///etc...
wp_enqueue_script( 'main-vendor' );
wp_enqueue_script( 'main-script' );
///etc...
if( is_page(79) ) {
wp_enqueue_script( 'gh-jobs-board' );
}
}
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue' );
まず第一に、あなたのコードにはミスタイプがあります。 wp_enqueue_scripts
ではなくwp_enqueue_script
です。それが問題かもしれません。
また、wp_enqueue_scripts
を別のwp_enqueue_scripts
内で使用しないでください。以下のように、theme_enqueue()
関数に条件を追加するだけです。
function theme_enqueue() {
if ( ! is_admin() ) {
wp_register_style( 'main-style', get_bloginfo( 'template_directory' ) . '/css/style.css?' . time() );
wp_enqueue_style( 'main-style' );
wp_enqueue_script( 'jquery' );
wp_register_script( 'main-vendor', get_bloginfo( 'template_directory' ) . '/js/vendor.js', array(), '1.0', true );
///etc...
wp_enqueue_script( 'main-vendor' );
wp_enqueue_script( 'main-script' );
if( is_page(79) ){
wp_register_script( 'gh-jobs-board', get_bloginfo( 'template_directory' ) . '/js/gh-jobs-board.js', array(), '1.0', true );
}
}
add_action('wp_enqueue_scripts', 'theme_enqueue');
theme_enqueue()
関数はwp_enqueue_scripts
自体にフックされていると思います。
あなたはスクリプトを登録しますが、それをエンキューしません。 wp_enqueue_script( 'gh-jobs-board')を追加してください。あなたの条件付き関数に。