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

时间:2014-02-27 13:36:56

标签: 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');
    }
}

但我收到错误:

  

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

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

3 个答案:

答案 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 );