在ARRAY()中添加布尔值的正确语法

时间:2014-05-09 作者:lberelson

条件php问题。。。我有一个数组,需要添加一个OR布尔值来检查其他类别4。不知道用于添加更多类别id的语法。我已经尝试了数组(\'cat\'=>-9,-4),但它只识别第一个id。

query_posts(
         array_merge(
            $wp_query->query,
            array(\'cat\' => -9,
                  \'ignore_sticky_posts\' => 1,
                  \'post__not_in\'  => $sticky,
                  \'posts_per_page\' => get_option(\'posts_per_page\'))

2 个回复
SO网友:Tom J Nowell

您的代码失败,因为:

array(
    \'cat\' => -9, -4
);
与以下内容相同:

array(
    \'cat\' => -9,
    -4
);
-4是它自己的元素,而不是“cat”参数的一部分。

正确的方法是:

array ( 
    \'cat\' => array( -9, -4 )
);
但这也会失败,因为“cat”采用的是单个值,而不是它们的集合/数组/列表,并且它不是要传递的正确参数:

http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

  • 类别(int)-使用类别id。
  • 类别名称(字符串)-使用类别slug(非名称)
  • category\\uu和(array)-使用类别id。
  • category\\uu in(array)-使用类别id。
  • category\\uu not\\u in(array)-使用类别id。
    • 所以您真正想要的是category__in.

      我还建议您在PHP上阅读PHP中的基本数组。net,尤其是$array[] = -4; 以及[] 操作人员

      但更令人担忧的是,你走错了方向。首先要了解的是,任何使用query_posts 从定义上讲,这几乎是错误的代码。

      原因是你所做的工作效率极低,这意味着WordPress已经完成了所有的数据库提升,然后你说“不,回去重新做一遍,但改用这些参数”。

      如果WordPress是一个办公室助理,它会转过身来问你为什么不告诉它你想从什么开始,好吧,你可以!

      See this question on why and when you should/shouldn\'t use query_posts

      pre\\u get\\u posts

      例如,这会修改主页查询以筛选出类别:

      function filter_cats_on_home( $query ) {
          if ( $query->is_home() && $query->is_main_query() ) {
              $query->set( \'category__in\', array( -1,-1347) );
          }
      }
      add_filter( \'pre_get_posts\', \'filter_cats_on_home\' );
      
      这比query_posts 在主页上。

      但更令人担忧的是

      \'cat\' => -9,
      
      我看到了硬编码的值。这不是便携式的。相反,请执行以下操作:

      将术语/类别ID存储在选项或post meta中,并提供某种用户界面,通过post slug引用类别,以便导出和导入内容或网站移动不会破坏一切

SO网友:тнє Sufi

您需要在quote中输入类别ID,如下所示:

\'cat\' => array ( -9, -4, -12 )
尽量避免query_posts

结束

相关推荐