Я недавно писал вопрос -
Автопоказ/скрытие слайдов в WordPress — как сделать?
В двух словах: мне нужно выводить слайды мероприятий (обложку новости) на главную.
То есть, у нас проходят разные ивенты - и на эту тему мы публикуем новости, при публикации ивента я выставляю дату ивента (Через доп.поле ACF), на главной нужно выводить только те ивенты, которые еще не прошли.
Вот, добрался до задачи.
1. Сделал шорткод:
add_shortcode( 'home-slides', 'lvl_home_post_slides' );
function lvl_home_post_slides( $atts ) {
ob_start();
$args = shortcode_atts( array (
'type' => 'post',
'orderby' => 'date',
'posts' => -1,
'public' => true,
), $atts );
$options = array(
'post_type' => $args['type'],
'posts_per_page' => $args['posts'],
'post_status' => 'publish'
);
$eventDate = date('d.m.Y', strtotime(get_post_meta($post->ID, 'dateend', 1)));
$currentDate = date('d.m.Y');
$query = new WP_Query( $options );
if ( $query->have_posts() ) { ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<?php
get_template_part( 'template-parts/slides', get_post_format() );
?>
<?php endwhile;
wp_reset_postdata(); ?>
<?php $myvariable = ob_get_clean();
return $myvariable;
}
}
2. Создал два дополнительных поля через ACF:
Затем шаблон самих слайдов (Картинка + ссылка)...в нем-же задействовал поля из ACF:
<?php
$eventDate = get_field( 'show_until' ); // Поле с датой из ACF ("Показывать до")
$currentDate = date('d.m.Y'); // Текущаяя дата
if($currentDate <= $eventDate && get_field( 'add_home_slide' ) == 1) { ?>
<div id="lastpost-<?php the_ID(); ?>" class="lastpost color-<?php $args['color'] ?>">
<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a>
</div>
<?php } ?>
Все в целом работает отлично, но не могу решить еще один момент - сортировка слайдов по дате ивента. То есть, нужно сортировать по ближайшей дате ивента (первый слайд тот, дата которого на подходе) - как это можно сделать?
Сейчас сортирует по дате публикации (это уже из тех слайдов, что прошли по параметрам ACF), а нужно по дате ивента...