WordPress中有条件的is_page()问题

时间:2010-07-14 10:00:17

标签: php wordpress conditional

有人可以告诉我为什么这段代码不起作用? is_page()无效。

function tao_scripts() {
if (!is_admin()) {


    wp_deregister_script('jquery');
    wp_register_script('jquery', get_template_directory_uri() . '/js/jquery-1.4.2.min.js', false, '1.4.2');
    wp_enqueue_script('jquery');

    if ( is_page() ) {
        wp_register_script('jquery-validate', get_template_directory_uri() . '/js/jquery.validate.min.js', 'jquery', '1.7');
        wp_enqueue_script('jquery-validate');
    }       
  }
}
add_action('init', 'tao_scripts');

代码在一个php文件中,包含在我的functions.php中。

我已经尝试了所有我能找到/想到的东西。如果没有is_page()条件,它就可以工作。我试过wp_reset_query(),没有帮助。我确定wordpress知道它的页面。 is_page(34,'name','Name')也不会有任何帮助。

3 个答案:

答案 0 :(得分:2)

与行动顺序有关

add_action('init', 'tao_scripts');

此操作在提取查询对象之前发生

答案 1 :(得分:0)

您可以尝试使用特定页面测试您的功能:

if ( is_page(34, 'name', 'Name') ) 
{
    // your code here
}

答案 2 :(得分:0)

从技术上讲,Torok错了。 is_page在循环外完美运行。我想它没有用,因为你没有正确使用wp_register_script。依赖项必须是一个数组:

wp_register_script('jquery-validate', get_template_directory_uri() . '/js/jquery.validate.min.js', array('jquery'), '1.7');

应该这样做。

编辑:

正如TheDeadMedic所指出的那样,你也应该在以后的钩子上挂钩。您应该使用的最早的是wp。我实际上建议使用template_redirect,因为只有当你在前端时才会运行(除非你想在后端替换jQuery)。