2015-06-09 2 views
0

Мои опубликованные сообщения содержат информацию о предстоящих событиях.Получить 20 следующих предстоящих сообщений этого дня в списке - Wordpress

У меня есть расширенное пользовательское поле под названием category-upcoming-date для этих сообщений. Формат этого поля является yy-mm-dd

я придумал следующее решение:

<?php 

// get posts 
$posts = get_posts(array(
      'post_type'   => 'post', 
      'category_name'  => 'category-upcoming', 
      'posts_per_page' => 20, 
      'meta_key'   => 'category-upcoming-date', 
      'orderby'   => 'category-upcoming-date', 
      'order'    => 'DESC' 
)); 

if($posts): ?> 

    <?php foreach($posts as $post): 

      setup_postdata($post) 

      ?> 
      <h4> 
      <a href="<?php the_permalink(); ?>"><?php the_field('category-upcoming'); ?> <?php the_title(); ?></a> 
      </h4> 

<?php endforeach; ?> 
<?php wp_reset_postdata(); ?> 
<?php endif; ?> 

Для примера, это дает мне список, который выглядит примерно так:

2018-12-24 Christmas 
2017-05-18 Yoga 
2015-07-31 Outdoor 
2015-04-03 Climbing 
2015-01-01 Running 
2013-04-02 Swimming 
2012-08-22 Superbowl 

Мои проблема в том, что я не хочу видеть сообщения с category-upcoming-date старше сегодняшнего дня. Итак 2013-04-02 Плавание и 2012-08-22 Superbowl не должно быть видно, но они есть.

И если там 40 будущих событий, Я хочу увидеть только следующие 20.

Я нашел это:

<?php 
$blogtime = current_time('mysql'); 
list($today_year, $today_month, $today_day) = split('([^0-9])', $blogtime); 
?> 

Но не знаю, как использовать его.

ответ

0

Ваш ответ в WordPress documentation используя offset индекс:

$args = array('posts_per_page' => 20, 'offset'=> 20, 'category' => 1); 

$myposts = get_posts($args); 
0

Я думаю, вы могли бы использовать get_field('category-upcoming-date'), чтобы получить дату после из специального поля в первой.

Тогда вы могли бы сделать что-то вроде этого, который использует strcmp() для сравнения двух строк:

// Note the format: You can use this since 3.0.9 and we only want the date 
$today = current_time('Y-m-d'); 
$postdate = get_field('category-upcoming-date'); 

if(strcmp($postdate, $today) >= 0) { 
    // If it´s larger or equal 0, the first string is equal or larger as the second 
} 

Update: сосчитать к this topic это тоже самое быстрое решение. Поэтому вы можете попробовать.

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