Как отобразить пользовательский тип записи, упорядоченный по пользовательскому полю даты

Вопрос или проблема

У меня есть пользовательский тип записи для деятельности на временной шкале.

Каждая запись имеет настраиваемое поле типа ДАТА. Имя поля: activity-date

Я использую плагин TYPES для пользовательского типа записи и настраиваемых полей.

Я хотел бы отсортировать эти записи по настраиваемому полю даты, я пробовал следующее, но это не сработало.

<?php $activities = new WP_Query( array(
    'post_type' => 'timeline',
    'posts_per_page' => -1,
    'key'           => 'activity-date',
    'orderby'       => 'meta_value_num',
    'order'         => 'ASC'                            
)); ?>

введите описание изображения здесь

Правильный ключ массива для использования – это meta_key, а не key. Вы можете использовать key только как часть подмассива meta_query, где часть ‘meta’ подразумевается.

Всё это описано в кодексе.

Попробуйте

<?php $activities = new WP_Query( array(
    'post_type' => 'timeline',
    'posts_per_page' => -1,
    'meta_key'      => 'activity-date',
    'orderby'       => 'meta_value_num',
    'order'         => 'ASC'                            
)); ?>

После долгих поисков выяснилось, что плагин TYPES хранит имя meta_key как

'meta_key' => 'wpcf-yourmetakey'

Решение:

<?php $activities = new WP_Query( array(
    'post_type'         =>  'timeline',
    'posts_per_page'    =>  -1, 
    'meta_key'          => 'wpcf-activity-date',
    'orderby'           => 'meta_value',
    'order'             => 'DESC'
    ));
?>

Ответ или решение

Для того чтобы отсортировать пользовательские типы записей по заданному полю даты в WordPress, необходимо использовать некоторые специфические параметры для настройки запроса. Вы упомянули, что используете плагин TYPES для создания пользовательских полей и типовых записей. Это имеет значение, так как плагин может изменять форматы хранения метаданных.

Шаг 1: Используйте правильный ключ для метаданных

При использовании плагина TYPES имя поля метаданных будет храниться в формате wpcf-{имя вашего поля}. Поэтому в вашем случае, если ваше поле называется activity-date, то оно будет храниться как wpcf-activity-date.

Шаг 2: Правильный запрос WP_Query

Теперь давайте правильно настроим ваш запрос WP_Query, чтобы он использовал данный ключ. В вашем случае запрос должен выглядеть следующим образом:

<?php 
$activities = new WP_Query( array(
    'post_type'         => 'timeline',                // Укажите тип записи
    'posts_per_page'    => -1,                        // Получить все записи
    'meta_key'          => 'wpcf-activity-date',      // Корректный ключ метаданных
    'orderby'           => 'meta_value',              // Сортировка по метадатам
    'order'             => 'ASC'                      // Порядок сортировки
)); 
?>

Шаг 3: Вывод данных

Для вывода полученных данных в цикле используйте следующий код:

<?php if ( $activities->have_posts() ) : ?>
    <ul>
        <?php while ( $activities->have_posts() ) : $activities->the_post(); ?>
            <li>
                <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                <span><?php echo get_post_meta( get_the_ID(), 'wpcf-activity-date', true ); ?></span> <!-- чтобы вывести дату -->
            </li>
        <?php endwhile; ?>
    </ul>
<?php else : ?>
    <p><?php _e('Нет записей для отображения.'); ?></p>
<?php endif; ?>
<?php wp_reset_postdata(); ?>

Шаг 4: Проверка формата даты

Убедитесь, что поле activity-date сохранено в правильном формате. Если вы используете стандартный формат даты (например, Y-m-d) или метасостояния типа timestamp, это упростит сортировку.

Если же у вас есть необходимость в сортировке по дате, но данные хранятся в другом формате, вам может понадобиться использовать meta_value_numeric с обеспечением кратности формата (например, преобразование даты в timestamp).

Заключение

Теперь вы знаете, как правильно отсортировать пользовательские посты по пользовательскому полю даты, используя необходимые параметры и корректный формат для плагина TYPES. Следуя этим шагам, вы сможете вывести ваши записи в нужном порядке. Если у вас возникнут дополнительные вопросы или потребуется помощь в дальнейшей настройке, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...