如何在插件中使用is_page()?

Web*_*urk 4 wordpress wordpress-plugin

我希望我的插件只在某个页面中注册一个脚本.

例如,在我的插件文件中,我想写这样的东西:

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');
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

is_page被错误地调用.在运行查询之前,条件查询标记不起作用.在此之前,他们总是返回虚假.有关更多信息,请参阅WordPress中的调试.(此消息是在3.1版中添加的.)

如何在插件内部在某个页面中注册脚本?

Rah*_*zir 12

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 );
    }
}
Run Code Online (Sandbox Code Playgroud)