У меня есть настраиваемое поле флажка (show_days) в качестве значений (1-7) для представления (Moo-Sun), и я проверил его с помощью эха, и он возвращает правильное значение. Пример сегодня - вторник, и эхо показывает 2.

Я пытаюсь сравнить его с текущей датой strftime("%u", time());, чтобы показывать только сообщения с пометкой текущего дня. Это не работает, и мне интересно, если мне нужно добавить куда-нибудь in_array. Спасибо за вашу помощь.

<?php
$days = get_field('show_days');
$date = strftime("%u", time());
if ($query->have_posts() && $days = $date )  { while( $query->have_posts() ) {
        $query->the_post();

        echo '<div class="onAir"><h3>Currently On Air: ';
        the_title();
           echo $days. '</h3></div>';

  } wp_reset_postdata();
}
?>
0
EdgarAlexPoe 21 Апр 2020 в 23:28

2 ответа

Лучший ответ

Ладно ... после многих сравнений и выдергивания моих волос, я их разобрал. Сравнение двух диапазонов времени настраиваемого поля с текущим временем, а затем сравнение выбранного дня недели с текущим днем и WP-запросом записей и, кроме того ... моя временная метка Wordpress была на 6 часов вперед. Тьфу ! хаха, этот код сделал это

 <?php
      $time = current_time('H:i:s');
      date_default_timezone_set('America/Denver');
      $date = strftime("%A", 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',
        'meta_query' => array(
            'relation' => 'AND',
        array(
                  'key'       => 'start_time',
                  'value'     => $time,
                  'compare'   => '<=',
                  'type'      => 'TIME',
            ),
        array(
                  'value'     => $time,
                  'key'       => 'end_time',
                  'compare'   => '>=',
                  'type'      => 'TIME',
            ),
            'relation'  => 'AND',
        array(
                  'key'       => 'show_days',
                  'value'     => $date,
                  'compare'   => 'LIKE',

        )
            )));

      if ($query->have_posts() )  { 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();
}
?>
0
EdgarAlexPoe 6 Май 2020 в 14:38

Вам необходимо добавить сравнение ($ days = $ date) в качестве meta_query к аргументам WP_Query.

<?php
$datetime = date('Y-m-d');
$day_number = date('w', strtotime($datetime));
$args = array(
    'post_type'    => 'your_post_type',
    'meta_key'     => 'show_days',
    'meta_value'   => $day_number,
    'meta_compare' => '=',
);
$query = new WP_Query( $args );
?>
<?php if ( $the_query->have_posts() ) : ?>

    <!-- the loop -->
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <div class="onAir">
            <h3>Currently On Air: <?php the_title(); ?> <?php echo $day_number; ?></h3>
        </div>
    <?php endwhile; ?>
    <!-- end of the loop -->

    <?php wp_reset_postdata(); ?>

<?php endif; ?>

0
Tokant 21 Апр 2020 в 21:51