首页 > 解决方案 > 元查询比较事件日期的问题

问题描述

我的自定义发布事件有一些问题。我只想显示日期等于或大于今天的事件,但我的代码无法正常工作并显示过去和未来的所有事件。

我的代码:

在functions.php中注册自定义帖子类型

function create_posttype() {
register_post_type('event', array(
  'public' => true,
  'has_archive' => false,
  'taxonomies' => array('category'),
  'supports' => array(
        'title', 'editor','thumbnail', 'custom-fields', 'revisions',     'page-attributes', 'post-formats'
    ),
  'menu_icon' => 'dashicons-calendar-alt',
  'rewrite' => array('slug' => 'events'),

  'labels' => array(
  'name' => __( 'Events' ),
  'singular_name' => __( 'Event' ),
        'add_new_item' =>__('Add New Event'),
        'edit_item' =>__('Edit Event'),
        'all_item' =>__('All Events')
       ),
  ));
add_action( 'init', 'create_posttype' );

front-page.php 我想在其中显示我未来的事件:

start_event_date 是一个自定义字段(日期选择器),显示格式:d/m/Y,返回格式:d/m/Y,

 $today =  date('d/m/Y');
    $argsEvents = array(
     'post_type' => 'event',
     'posts_per_page' => 3,
     'meta_key' => 'start_event_date',
     'orderby' => 'meta_value',
     'order' => 'ASC',
     'meta_query' => array(
         array(
           'key' => 'start_event_date',
            'compare' => '>=',
            'value' => $today,
             'type' => 'datetime'
           )
       )                    
     );

$theEventsPosts = new WP_Query($argsEvents);
    while($theEventsPosts->have_posts()){
      $theEventsPosts->the_post();

//here i have my event-card-post html 
}

我认为我的代码的一切都是正确的,但仍然无法正常工作。请给我任何建议。

标签: wordpressadvanced-custom-fieldsmeta-query

解决方案


最近我有同样的问题。当我深入研究 ACF PRO 文档时,我发现返回日期格式与字段日期在数据库中的存储方式无关。实际上,它是 Ymd - https://www.advancedcustomfields.com/resources/date-picker/ ,这是您应该为您的$today. 另外,我'DATE'meta_query.

$today =  date('Ymd');

'meta_query' => array(
  array(
    'key' => 'start_event_date',
    'compare' => '>=',
    'value' => $today,
    'type' => 'DATE'
  )
)


推荐阅读