我如何在插件中使用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