wordpress - 简单的 WP 查询即将发生的事件以及开始或结束日期

标签 wordpress events

我正在处理即将发生的事件列表。我创建一个自定义帖子类型,带有自定义字段:event_start_date。我还有一些多日扩展事件,由附加自定义字段定义: event_end_date 。

我有一个代码,可以很好地处理 start_date 晚于今天的事件。但我未能合并 end_date 条件。我尝试使用具有 OR 关系的元查询,但目前不起作用:

$args = array(
    'post_type' => 'events',
    'posts_per_page' => 4,
    'orderby' => 'event_start_date',
    'order' => 'ASC',
    'meta_query' => array(
         'relation' => 'OR',
          array('key'  => 'event_start_date',
              'value' => date('m/d/Y', strtotime('-1 day')),
              'compare' => '>='),

              array('key'  => 'event_end_date',
                  'value' => date('m/d/Y', strtotime('-1 day')),
                  'compare' => '>=')
    )
);
$loop = new WP_Query( $args ); 
while ( $loop->have_posts() ) : $loop->the_post();
// Rest of the loop

提前致谢。

注意:我还有另一个查询,可以完美选择仅开始日期 > 而非当前日期的事件。

                    $args = array(
                    'post_type' => 'events',
                    'posts_per_page' => 4,
                    'meta_key'  => 'event_start_date',
                    'meta_value' => date('m/d/Y', strtotime('-1 day')),
                    'meta_compare' => '>=', 
                    'orderby' => 'event_start_date',
                    'order' => 'ASC',           
                    ); // The same loop and query

最佳答案

实际上,要按元键排序,meta-key 必须出现在查询中,并使用 meta_value 作为 orderby 值。

$args = array(
    'post_type' => 'events',
    'posts_per_page' => 4,
    'meta_key' => 'event_start_date', // required to be used in orderby
    'meta_query' => array(
        'relation' => 'OR',
            array(
                'key'  => 'event_start_date',
                'value' => date('m/d/Y'),
                'compare' => '>'
            ),
            array(
                'key'  => 'event_end_date',
                'value' => date('m/d/Y'),
                'compare' => '>'
            )
    ),
    'orderby' => 'meta_value', // orderby will use the value of meta_key
    'order' => 'asc',
);
$loop = new WP_Query($args);

您还可以在每个元查询数组中使用类型,如下所示

array(
    'key'  => 'event_end_date',
    'value' => date('m/d/Y'),
    'compare' => '>',
    'type' => 'DATE' // to specify the type of the field/value
)

更新:您应该使用 date('m/d/Y')'compare' => '>' 并进行确保您的日期格式正确,因为现在是(月/日/年)。 date('m/d/Y', strtotime('-1 day')) 也会显示过去的日期。

如果其他一切都正确,这应该可以工作。 Read Here .

关于wordpress - 简单的 WP 查询即将发生的事件以及开始或结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11813322/

相关文章:

wordpress - 如何在购物车总额中添加折扣?

events - 手势识别 JavaScript 库

javascript - google maps fusiontable 图层正在加载或完成加载时触发事件?

css - 水平 div 未正确对齐

javascript - 显示具有事件目标的对象的属性

c++ - 如何获取所有可用的事件日志名称?

javascript - 事件监听器循环

php - 在 "woocommerce_package_rates"钩子(Hook)中自定义税额

php - wordpress 在 wordpress 循环中获取自定义帖子类型的类别名称?

php - 尝试在Wordpress中的wp-includes/post.php中获取非对象的属性 'ID'