为了账号安全,请及时绑定邮箱和手机立即绑定

元查询选择 ACF 不返回当前日期的帖子

元查询选择 ACF 不返回当前日期的帖子

PHP
蝴蝶刀刀 2022-12-23 15:08:19
我正在尝试根据 ACF 选择(多个)一周中的几天(周一至周日)返回一个帖子类型。我使用 ACF Select 键 (show_days) 和当前日期的关系设置了一个元查询。var_dump 显示两个数组正在相互比较,但仍未显示节目(帖子类型)。<?php      $date = date('l');      $shows = get_field('station_shows', false, false);      $query = new WP_Query ( array(        'post_type'       => 'shows',        'posts_per_page'  => 1,        'post__in'        => $shows,        'post_status'     => 'publish',        'meta_query' => array(            'relation' => 'AND',           array (                       'key'           => 'show_days',                       'value'     => array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'),                       'compare'  => 'IN',                     ),           array (                       'key'       => 'date',                       'value'     => $date,                       'compare'   => '=',                       'type'      => 'DATE',                     ),             )));       if ( $query->have_posts() ) { while( $query->have_posts() ) {       $query->the_post();       echo '<div class="onAir"><h3>Currently On Air: ';       the_title();       if (get_field('dj', $query->ID)) {                 $dj = get_field('dj');                 echo ' w/ ';              echo $dj;          }           echo '</h3></div>';          } wp_reset_postdata();        } ?>不知道是不是数据库元值不对应。我什至尝试过 unserialize() 数组,但它仍然返回相同的数组值。任何帮助,将不胜感激。谢谢!
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

好吧,我想通了。此查询与时间查询结合使用,因此我将整个代码放在一起。它正在将当前时间与两个自定义字段(时间范围)进行比较,以及哪些日期被选中(复选框)。因此,如果是星期二下午 4 点,它只会显示时间范围为下午 4 点,并且如果星期二被选中。此外,它还有一个关系字段,我可以在其中将节目分配给某些广播电台。所以在 Radio Station 帖子类型页面上,广播功能将根据一天中的时间显示!


 <?php

      $time = current_time('H:i:s');

      $date = strftime("%u", time());

      $shows = get_field('station_shows', false, false);

      $query = new WP_Query ( array(

        'post_type'       => 'shows',

        'posts_per_page'  => 1,

        'post__in'        => $shows,

        'post_status'     => 'publish',

        'orderby'         => 'meta_value',

        'meta_key'        => 'show_days',

        'meta_query' => array(

            'relation' => 'AND',

        array(

                  'key'       => 'start_time',

                  'value'     => $time,

                  'compare'   => '<=',

                  'type'      => 'TIME',

            ),

        array(

                  'value'     => $time,

                  'key'       => 'end_time',

                  'compare'   => '>=',

                  'type'      => 'TIME',

            ),



       ))


        );

        $days = the_field('show_days');

      if ($query->have_posts()  && $days = $date  )  { while( $query->have_posts() ) {

        $query->the_post();


        echo '<div class="onAir"><h3>Currently <span>On Air</span> : ';

        the_title();

           echo '</h3></div>';


   }

   wp_reset_postdata();

  }

 ?>


查看完整回答
反对 回复 2022-12-23
  • 1 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号