Meta_Query Order By Date Present->Future Then Show NULL

时间:2020-07-02 作者:Ben

感谢您抽出时间阅读本文。我一直在为我正在处理的一个事件网站的meta\\u查询而苦苦挣扎。

我使用ACF为日期开始和日期结束创建了一个字段,但并非所有事件都有日期。

我想实现的是,当你转到归档或税务视图时,你看到的第一件事是指定了日期的帖子,按照从今天到未来的顺序排列。然后在输出这些日期事件之后,循环遍历所有空的日期帖子。

到目前为止,我的职能如下。php文件。这种方法很有效,但顺序不对。因此,以正确的顺序输出日期正确的事件。但只有在空值项具有输出之后。我认为这可能是因为数组本身的排序,所以将日期排序数组移到了末尾。那没有效果。

$query->set( \'post_type\', \'courses\' );
$query->set( \'meta_query\', array(
    \'relation\' => \'OR\',
    array(
        \'key\'        => \'_course_date_from\',
        \'compare\'    => \'=\',
        \'value\'      => \'\',
    ),
    array(
        \'key\'     => \'_course_date_from\',
        \'compare\' => \'>=\',
        \'value\'   => date(\'Ymd\'),
    )
) );
$query->set( \'orderby\', \'meta_value title\' );
$query->set( \'order\', \'ASC\' );
谢谢你的时间。本。

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

不确定它是否对您有帮助,但我认为将其拆分为两个简单的查询是一种简单的方法,但需要一些额外的工作才能按顺序显示两个$查询结果。这对用户来说可能更好,因为您可以清楚地告诉他们,您正在向他们显示两个有日期和无日期的列表?

现在的逻辑是:“date\\u from为空或date\\u from>;=今天,按标题对其进行排序”。这和你想要的有点不同。

您描述的逻辑更容易描述为要显示的两个列表:(我假设可以只使用date\\u from,而不检查date\\u to是否为空,如果date\\u from为空,则要显示从今天开始的列表):

(date\\u from不为空)和date\\u from今天,ASC的order by date\\u from是空的,DESC的order by date\\u是空的。如果这听起来是一个好的方向,那么应该可以找出如何将两个查询结果合并为一个,这里有一个相当复杂的示例:https://stackoverflow.com/questions/23555109/wordpress-combine-queries, 但很乐意帮助编写代码,因为这听起来很有用。

相关推荐

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

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