我希望我的插件仅在某个页面中注册脚本。

例如,我想要写入这样的插件文件:

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 );
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top