Задать вопрос

Как вывести новости только сегодня с сортировкой по дополнительному полю wordpress?

Добрый день! Помогите решить проблему с выводом анонсов на wordpress.
Нужно сделать на главной три блока. Новости за сегодня, потом завтра и вчера.
Есть дополнительное поле event-date-time я тут указал дату публикации.
Есть код:
<section class="post-list-thumbnail-index">
				<div class="title">Бесплатные прогнозы на футбол</div>
				<?php
					global $post;
					$args = array( 'posts_per_page' => 10, 'cat' => '-1,-4,-6', 'meta_key' => 'event-date-time', 'orderby' => 'meta_value_num' );
					$myposts = get_posts( $args );
					foreach( $myposts as $post ){ setup_postdata($post); ?>
						<?php
							$result = '';
							$temp_current_date = date('d-m-Y');
							$temp_event_date = get_field('event-date-time');
							$temp = substr($temp_event_date, 0,10);
							$current_date = date_create($temp_current_date);
							$event_date = date_create($temp); 
							$interval = date_diff($current_date, $event_date);
							switch ($interval->format('%R%a')) {
								case '+0': $result = "Сегодня".", ".substr($temp_event_date, -5); break;
								case '-1': $result = "Вчера".", ".substr($temp_event_date, -5); break;
								case '+1': $result = "Завтра".", ".substr($temp_event_date, -5); break;
								default: $result = substr($temp_event_date, 0,10).', '.substr($temp_event_date, -5);
							}
						?>
						<article class="clearfix">
							<div class="thumb">
								<a href="<?php the_permalink(); ?>">
									<?php the_post_thumbnail('index-thumb'); ?>
								</a>
							</div>
							<div class="article-text">
								<div class="date">
									<?php $cat = get_the_category(); ?>
									<a href="<?php echo get_category_link($cat[0]->term_id); ?>"><?php echo $cat[0]->name; ?></a> » <?php echo $result; ?>
								</div>
								<div class="article-title">
									<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
								</div>
								<div class="text"><?php the_excerpt(); ?></div>
							</div>
						</article>
					<?php }
					wp_reset_postdata();
				?>
			</section>


Как мне разделить код на три блока с сортировкой отдельно:
Сегодня
Завтра
Вчера ?
  • Вопрос задан
  • 246 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Palych_tw
@Palych_tw
Типа веб-разработчик
Написать три цикла (get_posts оставить один). Сортировать даже по мета полю не нужно. Просто в первом foreach сравниваем с "сегодня" - если сегодня - выводим пост, иначе - continue. Второй foreach с "Вчера", третий с "Завтра". Можно еще в зависимости от даты давать article разные классы,а потом через JS как-то их раскидывать.. но это, наверное, очень геморно)

UPD
<section class="post-list-thumbnail-index">
    <div class="title">Бесплатные прогнозы на футбол</div>
    <?php
    global $post;
    $args = array( 'posts_per_page' => 10, 'cat' => '-1,-4,-6', 'meta_key' => 'event-date-time', 'orderby' => 'meta_value_num' );
    $myposts = get_posts( $args );
    $temp_current_date = date('d-m-Y');
    
    //сегодня
    foreach( $myposts as $post ):
        $temp_event_date = get_field('event-date-time', $post->ID);
        $temp = substr($temp_event_date, 0,10);
        $current_date = date_create($temp_current_date);
        $event_date = date_create($temp);
        $interval = date_diff($current_date, $event_date);
        if ($interval->format('%R%a') == '+0') :
            setup_postdata($post); ?>
            <article class="clearfix">
                <div class="thumb">
                    <a href="<?php the_permalink(); ?>">
                        <?php the_post_thumbnail('index-thumb'); ?>
                    </a>
                </div>
                <div class="article-text">
                    <div class="date">
                        <?php $cat = get_the_category(); ?>
                        <a href="<?php echo get_category_link($cat[0]->term_id); ?>"><?php echo $cat[0]->name; ?></a> » <?php echo $result; ?>
                    </div>
                    <div class="article-title">
                        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                    </div>
                    <div class="text"><?php the_excerpt(); ?></div>
                </div>
            </article>
        <?php else :
             continue;
        endif;
    endforeach;
    
    //вчера
    foreach( $myposts as $post ):
        $temp_event_date = get_field('event-date-time', $post->ID);
        $temp = substr($temp_event_date, 0,10);
        $current_date = date_create($temp_current_date);
        $event_date = date_create($temp);
        $interval = date_diff($current_date, $event_date);
        if ($interval->format('%R%a') == '-1') :
            setup_postdata($post); ?>
            <article class="clearfix">
                <div class="thumb">
                    <a href="<?php the_permalink(); ?>">
                        <?php the_post_thumbnail('index-thumb'); ?>
                    </a>
                </div>
                <div class="article-text">
                    <div class="date">
                        <?php $cat = get_the_category(); ?>
                        <a href="<?php echo get_category_link($cat[0]->term_id); ?>"><?php echo $cat[0]->name; ?></a> » <?php echo $result; ?>
                    </div>
                    <div class="article-title">
                        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                    </div>
                    <div class="text"><?php the_excerpt(); ?></div>
                </div>
            </article>
        <?php else :
            continue;
        endif;
    endforeach;
    
    //завтра
    foreach( $myposts as $post ):
        $temp_event_date = get_field('event-date-time', $post->ID);
        $temp = substr($temp_event_date, 0,10);
        $current_date = date_create($temp_current_date);
        $event_date = date_create($temp);
        $interval = date_diff($current_date, $event_date);
        if ($interval->format('%R%a') == '+1') :
            setup_postdata($post); ?>
            <article class="clearfix">
                <div class="thumb">
                    <a href="<?php the_permalink(); ?>">
                        <?php the_post_thumbnail('index-thumb'); ?>
                    </a>
                </div>
                <div class="article-text">
                    <div class="date">
                        <?php $cat = get_the_category(); ?>
                        <a href="<?php echo get_category_link($cat[0]->term_id); ?>"><?php echo $cat[0]->name; ?></a> » <?php echo $result; ?>
                    </div>
                    <div class="article-title">
                        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                    </div>
                    <div class="text"><?php the_excerpt(); ?></div>
                </div>
            </article>
        <?php else :
            continue;
        endif;
    endforeach;
    wp_reset_postdata();?>
</section>

Возможно где-то отдебажить надо будет
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы