【问题标题】:Wordpress query based on ACF Datepicker values results in no posts基于 ACF Datepicker 值的 Wordpress 查询导致没有帖子
【发布时间】:2016-09-07 14:06:03
【问题描述】:

所以我在 post 类型中添加了一些自定义字段,即 event_startdate 和 event_enddate。我的目标是显示当前正在进行的所有事件(因此当前日期介于开始日期和结束日期之间)。但是,我当前的代码没有显示任何帖子。

这就是我所拥有的:

<?php
        $today = date('Ymd');

        $args = array (
            'posts_per_page'         => '9',
            'order'                  => 'ASC',
            'orderby'                => 'id',
          'meta_query'             => array(
              array(
                'key'     => 'event_startdate',
                'compare' => '>=',
                'value'   => $today
              ),
              array(
                'key'     =>  'event_enddate',
                'compare' =>  '<=',
                'value'   => $today
              )
          )
        );

        $query = new WP_Query( $args );

        if ( $query->have_posts() ) {
            while ( $query->have_posts() ) {

然后是循环的其余部分。我知道循环有效,因为删除 meta_query 时会显示所有帖子。可能是什么问题?我已经尝试了一些不同的日期格式(硬编码),但这似乎并没有解决它。也尝试了在线发布的其他解决方案,但似乎没有一个可以解决问题。

编辑:同时开始处理另一个查询,这次使用的是 TRUE/FALSE 字段 event_featured。除了 args 之外,代码与前面提到的代码相同。也不回帖:

     $args = array (
        'post_type'              => 'post',
        'posts_per_page'         => '9',
        'order'                  => 'ASC',
        'orderby'                => 'id',
      'meta_query'             => array(
          array(
              'key' => 'event_featured',
              'value' => '1',
              'compare' => '=='
          )
      )
    );

【问题讨论】:

    标签: php wordpress date advanced-custom-fields


    【解决方案1】:

    我没有在您的代码中看到您声明要查询的帖子类型。将 post 类型添加到查询中,请参见第一个数组之后的第一行。尝试使用这个:

        $args = array (
            'post_type'              =>'posttype',
            'posts_per_page'         => '9',
            'order'                  => 'ASC',
            'orderby'                => 'id',
          'meta_query'             => array(
              array(
                'key'     => 'event_startdate',
                'compare' => '>=',
                'value'   => $today
              ),
              array(
                'key'     =>  'event_enddate',
                'compare' =>  '<=',
                'value'   => $today
              )
          )
        );
    
        $query = new WP_Query( $args );
    
        if ( $query->have_posts() ) {
            while ( $query->have_posts() ) {
    

    【讨论】:

    • 这是默认值(post),所以没关系:P 至少对我不起作用。
    【解决方案2】:

    发现问题。我在 PHP 中创建了这些字段。使用管理界面创建它们对我有用。因此,如果您也在为此苦苦挣扎,请删除 php 中的字段并在 Wordpress 中再次创建它们。

    如果您想将它们包含在您的主题中,请使用 ACF 中的导出工具将字段导出为 PHP 代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 2019-05-18
      • 2020-12-13
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多