我希望我的插件只在某个页面中注册脚本。
例如,在我的插件文件中,我想写这样的东西:
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。条件查询标记不起作用 在运行查询之前。在此之前,他们总是返回虚假。请 有关更多信息,请参阅WordPress中的调试。 (这条消息是 在3.1版中添加。)
如何在插件内部在某个页面中注册脚本?
答案 0 :(得分:11)
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 );
}
}
答案 1 :(得分:2)
您可以在模板重定向后使用is_page()
,因此您需要像这样添加钩子:
add_action('template_redirect','your_function');
function your_function(){
if ( is_page('test') ) {
// do you thing.
}
}
答案 2 :(得分:0)
您必须注册您的脚本,就像您希望它在任何地方都可以使用一样。 你可以在工作完成后取消注册,如下所示:
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 );