web-dev-qa-db-ja.com

それがwp_footer()の一部として呼び出されないように、jQueryを「アンフック」/登録解除するにはどうすればよいですか?

私はwp_footer()からjQueryを「アンフック」する必要があります...それは自動的に呼ばれています。ヘッダー内)

フッターを呼び出すほうが良い理由についての編集上のコメントはありません

2
Brian

あなたは登録解除スクリプト;それをunavailableキューに入れる)にするのではなく、dequeueスクリプト)にしたくありません。

2つの選択肢があります。

  1. wp_enqueue_script( 'jquery' )が呼ばれるコールバック関数を知っていれば、単にremove_action( 'wp_footer', 'callback_function_name' )を呼び出すことができます。
  2. おそらく、コールバック関数(またはjQueryが別のスクリプトによる依存関係としてエンキューされること)を知らないかもしれません。その場合は、 wp_dequeue_script() を介して直接実行できます。

例えば.

function theme_slug_dequeue_footer_jquery() {
     wp_dequeue_script( 'jquery' );
}
add_action( 'wp_footer', 'theme_slug_dequeue_footer_jquery', 11 );

注意:dequeueの呼び出しがafterthe enqueueの呼び出し)を起動するようにする必要があるため、priorityはおそらく非常に重要です。

編集する

このテーマはデフォルトのTwentyElevenテーマからカスタマイズしています。 WordPressを夢中にさせているのはテーマそのものであり、プラグインではないようです。デフォルトのfunctions.phpを調べましたが、そこにはwp_enqueue_script()はありません。私が見るべき他の場所はありますか?

あなたは偶然ショーケーステンプレート(すなわち showcase.php )を見ていますか?カスタムスクリプトがエンキューされることに注意してください。

wp_enqueue_script( 'twentyeleven-showcase', get_template_directory_uri() . '/js/showcase.js', array( 'jquery' ), '2011-04-28' );

つまり、WordPressは最初にjQueryをエンキューし、次にthenenqueue twentyeleven-showcaseとなります。つまり、jQueryエンキューの謎の原因となる可能性があります。

/inc/theme-options.phpにはwp_enqueue_script()呼び出しもありますが、フロントエンドのスクリプトエンキューに影響を与えることはないと思います。)

6
Chip Bennett

スクリプトの登録を解除する機能は次のとおりです。

wp_deregister_script('jquery');

しかし、あなたが抱えている問題は、私が正しく理解したものであれば、異なるものです - あなたはjQuryにTWICEが2回含まれています。これは誤って実行されるプラグインまたはテーマ関数です - フッターで印刷するように特に要求します。他の問題を引き起こす可能性があるので、問題をよりよく識別したいと思うかもしれません...

とにかく、フックの例は次のとおりです。(init 1つ、print_scripts 1つ)

function dl_register_common_js() {
wp_deregister_script('jquery');
}
//add_action('init', 'dl_register_common_js'); // will deregister from head
add_action('wp_print_scripts', 'dl_register_common_js');
1
krembo99