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

Как сортировать посты в шорткоде WP?

1. Есть шорткод для вывода 10 последних опубликованных записей:

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' => 10,
        'public'   => true,
    ), $atts );
    $options = array(
        'post_type' => $args['type'],
        'posts_per_page' => $args['posts'],
        'post_status' => 'publish'
    );

    $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;
    }
}

Тут все нормально, далее мне нужно эти 10 записей отсортировать по дате мероприятия (она задана в каждой записи через ACF - "event_date").

Шаблон шорткода:

<?php
$eventDate = get_field( 'event_date' );
$currentDate = date('d.m.Y');

if($currentDate <= $eventDate && get_field( 'add_home_slide' ) == 1) { ?>

<div id="lastpost-<?php the_ID(); ?>" class="lastpost">
    <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a>
</div>

<?php } ?>

Шаблон скрывает те записи, дата которых уже в прошлом. Но вот последний момент - как отсортировать вывод этих 10 записей по дате ивента?

P.S у ACF есть сортировка по кастомному полю, но в моем же случае - нужно две сортировки - первая берет 10 последних опубликованных записей, а вторая сортирует уже среди этих 10 - так можно?
  • Вопрос задан
  • 109 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
cesnokov
@cesnokov
<head>&nbsp;</head>
Всё можно отсортировать за один раз:
function lvl_home_post_slides( $atts ) {
...
    $options = array(
        'post_type' => $args['type'],
        'posts_per_page' => $args['posts'],
        'post_status' => 'publish',
        'orderby'  => array(
            'post_date' => 'DESC', 
            'meta_value' => 'ASC'
        ),
    	'meta_key' => 'event_date'
    );
    $query = new WP_Query( $options );
...
}

Документация тут: https://developer.wordpress.org/reference/classes/...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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