プラグイン内で is_page() を使用するにはどうすればよいですか?
-
23-12-2019 - |
質問
プラグインで特定のページにのみスクリプトを登録したいと考えています。
たとえば、プラグイン ファイル内に次のような内容を書きたいとします。
if (is_page()) {
$pageid_current = get_the_ID();
$page_slug = get_post($pageid_current)->post_name;
if ($page_slug == 'articles'){
wp_register_script('myscript', '/someurl/main.js');
}
}
しかし、次のエラーが発生します。
is_page が正しく呼び出されませんでした。条件付きクエリタグは、クエリが実行される前に機能しません。それまでは、常に false を返します。詳細については、WordPressのデバッグをご覧ください。(このメッセージはバージョン3.1に追加されました。)
プラグイン内で特定のページにスクリプトを登録するにはどうすればよいですか?
解決
is_page()
テンプレート ファイル内でのみ機能します。
プラグイン ファイル内で使用するには、次の組み合わせで使用する必要があります。 template_redirect
アクションフック。
このアクション フックは、WordPress がどのテンプレート ページを読み込むかを決定する直前に実行されます。
したがって、次のスニペットは機能します。
add_action( 'template_redirect', 'plugin_is_page' );
function plugin_is_page() {
if ( is_page( 'articles' ) ) {
wp_register_script( 'my-js-handler', '/someurl/main.js', [], '1.0.0', true );
}
}
他のヒント
テンプレートのリダイレクト後にis_page()
を使用することで、このようなフックに追加する必要があります。
add_action('template_redirect','your_function');
function your_function(){
if ( is_page('test') ) {
// do you thing.
}
}
. register あなたのスクリプトはどこにでも機能したいかのように登録する必要があります。 このように、ジョブが完了した後に登録できます。
function deregister_my_script() {
if (!is_page('page-d-exemple') ) {
wp_deregister_script( 'custom-script-1' );
}
}
add_action('wp_print_scripts', 'deregister_my_script', 100 );
. 所属していません StackOverflow