2015-07-23 4 views
1

Я пытаюсь создать список из 10 продуктов с датой публикации в будущем, заказанных в последнее время для большинства в будущем. Дата публикации хранится как longtext в расширенном настраиваемом поле, называемом «publish_daet» в формате Ymd. Код, который я использую, ниже, но результаты не так ожидаемы (результаты ниже кода). Есть идеи?Wordpress запрос и порядок по дате

<section id="recent"> 
<ul class="row-fluid"> 
    <?php 

    $today = date('m/d/Y'); 

     $args = array(
    'post_type'  => 'product', 
    'showposts' => 10, 
    'meta_key'  => 'publication_date', 
    'meta_value' => $today, 
    'meta_compare' => '>', 
    'order' => 'ASC', 
     ); 
     $loop = new WP_Query($args); 
     while ($loop->have_posts()) : $loop->the_post(); global $product; ?> 

       <li class="span3">  

        <a id="id-<?php the_id(); ?>" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"> 

         <b><?php $date = DateTime::createFromFormat('Ymd', get_field('publication_date'));?><?php echo $date->format('m/d/Y'); ?></b>: <?php the_title(); ?> 

        </a> 
       </li><!-- /span3 --> 
    <?php endwhile; ?> 
    <?php wp_reset_query(); ?> 

</ul><!-- /row-fluid --> 
</section><!-- /recent --> 

Результаты:

11/20/2013: Столицы

09/03/2015: Orphan Black Card Game

07/10/2014: Сыны Анархии мужчин Mayhem

07/25/2013: Единорог Frenzies

06/25/2015: Средневековая академия

07/03/2014: Krosmaster Arena DuelPack

01/29/2015: отредактированный

06/15/2010: 3:16 Carnage Среди звезд

04/29/2015 : BattleTech Recon Lance пакет

12/17/2014: Duke Siege Engines средневековье

ответ

0

Ваш формат даты в пользовательском поле правильно. Формат даты должен быть отметкой времени unix или в формате Y-m-d.

Однако формат сегодняшней даты неверен. В отличие от поля date_query, настраиваемые поля сравниваются буквально, никаких конверсий не выполняется для любого значения, поэтому ваши форматы сравниваемых значений должен соответствовать. Короче говоря, если ваша дата хранится в настраиваемом поле как временная метка unix, ваша дата, которую нужно сравнить, должна быть отметкой времени unix, иначе ваши сравнения не пройдут. То же самое с форматами дат, если ваша дата сохранена как Ymd, ваш формат для сравнения должен быть Ymd. Если ваш формат Y-m-d, то ваш формат для сравнения должен быть Y-m-d. Если это формат не совпадают, ваше сравнение обречено

Чтобы решить проблему, измените значение $today, чтобы соответствовать один и тот же формат, что и настраиваемого поля

Смежные вопросы