是否可以将特定帖子设置为在查询中首先显示?

时间:2018-08-30 作者:Brett Neville

请原谅我,如果我的问题不是最清楚的,我使用的不是完全正确的。。。我以前从未发过帖子。

我试图在我正在开发的房地产网站上设置一个查询,根据自定义字段的值,该查询将优先显示公司的列表(自定义帖子类型),然后再显示其他列表(相同自定义帖子类型)。在我的meta\\u查询数组中,我可以添加如下数组,通过帖子上的自定义字段显示办公室的列表:

array(
  \'key\'        => \'office_name\',
  \'compare\'    => \'LIKE\',
  \'value\'      =>  \'XYZ Realty\'
),
在我的查询中使用上面的代码片段可以按预期获取办公室的列表,但只能获取“他们的”列表(或在自定义字段中有办公室名称的帖子)。

出于排序目的,我使用以下内容按价格排序,这是我自定义帖子类型(“列表”)上的另一个自定义字段:

\'meta_key\' => \'price\', 
\'orderby\' => \'meta_value_num\',
\'order\'  => \'DESC\'
它也能按预期工作。所以就这样。。。是否可以调整查询,使其优先显示办公室的列表,然后再显示那些不是他们的列表?

2 个回复
最合适的回答,由SO网友:honk31 整理而成

您的meta\\u查询排除了所有非xyz结果,因此您必须调整该部分,它还包括所有其他结果。

在下面的示例中,查询调用xyz和那些根本没有设置该字段的人。产生3个元查询,一个用于价格,一个用于xyz,另一个用于其他。所有这些对于正确的分类都很重要。不确定它是否能在开箱即用,但这是一个开始。记住设置您的cpt。。

$args = array(
  \'post_type\' => \'your_cpt\',
  \'meta_query\' => array(
    array(
      \'relation\' => \'AND\',
      \'price\' => array(
        \'key\' => \'price\',
        \'compare\' => \'EXISTS\',
      ),
      array(
        \'relation\' => \'OR\',
        \'xyz_realty\' => array(
          \'key\' => \'office_name\',
          \'compare\' => \'LIKE\',
          \'value\' =>  \'XYZ Realty\'
        ),
        \'other_realty\' => array(
          \'key\'       => \'office_name\',
          \'compare\'   => \'NOT EXISTS\',
        ),
      )
    ),
  ),
  \'orderby\' => array(
    \'xyz_realty\' => \'ASC\',
    \'other_realty\' => \'ASC\',
    \'price\' => \'DESC\'
  )
);

SO网友:Eric B.

如果您将其设置为始终显示第一个或最后一个键的方式,则可以按该键进行排序。

您还可以查询该键值,然后再次查找与该元键值不匹配的列表。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post