Как правильно собрать шорткод WordPress?

Я недавно писал вопрос - Автопоказ/скрытие слайдов в 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:

5dd3e773d7150477067143.png
Затем шаблон самих слайдов (Картинка + ссылка)...в нем-же задействовал поля из 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), а нужно по дате ивента...
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 1
ssenj
@ssenj
HTML, CSS, PHP, WordPress, Bitrix
В аргументах shortcode_atts[] можно использовать направление сортировки
Например
'order' => 'DESC',
Ответ написан
Ваш ответ на вопрос

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

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