【问题标题】:Problem with is_page() conditional in WordPressWordPress 中的 is_page() 条件问题
【发布时间】:2011-03-15 18:37:09
【问题描述】:

谁能告诉我为什么这段代码不起作用? 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');

代码位于我的functions.php 中包含的php 文件中。

我已经尝试了所有我能找到/想到的。没有 is_page() 条件它可以工作。我试过 wp_reset_query(),没有帮助。我确定 wordpress 知道它的一个页面。 is_page(34, 'name', 'Name') 也无济于事。

【问题讨论】:

    标签: php wordpress conditional


    【解决方案1】:

    跟动作的顺序有关

    add_action('init', 'tao_scripts');
    

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

    【讨论】:

      【解决方案2】:

      从技术上讲,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)。

      【讨论】:

      • 你应该使用wp钩子而不是init——WordPress在初始化阶段没有解析请求,所以它不知道它是否是一个页面。
      • 绝对正确。我错过了WP_Query 的构造函数如果没有信息传递给它就不会解析 args。很好的收获。
      • 啊当然。这是有道理的,它解决了我的问题。非常感谢 :D 并感谢您指出我的非数组依赖项,也已修复 :)
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-23
        • 1970-01-01
        • 2018-06-29
        • 2011-01-19
        • 1970-01-01
        • 1970-01-01
        • 2022-08-19
        • 1970-01-01
        相关资源
        最近更新 更多