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

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

У меня есть пользовательский тип записи ‘artists’. Я перечисляю их по атрибуту порядка (menu_order).

$args = array(
    'post_status' => 'publish',
    'post_type'   => array('artists),
    'orderby'=> array('menu_order'=>'ASC' ),
);
$wp_query = new WP_Query( $args );

Когда я использую the_post_navigation(), чтобы получить ссылки на предыдущий и следующий посты, он использует дату как порядок вместо menu_order. Как мне сделать так, чтобы это работало правильно в этом случае?

Возможно, лучше использовать эту функцию get_adjacent_post.

Я еще не тестировал это, но кажется, что она более гибкая, чем функция the_post_navigation().

К вашему сведению, the_post_navigation() использует эту функцию внутри для получения следующего и предыдущего постов.

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

Чтобы создать навигацию "Предыдущий" и "Следующий" для пользовательского типа записи ‘artists’, основанную на пользовательском атрибуте порядка (menu_order), вы можете использовать функцию get_adjacent_post(), как вы уже отметили. Давайте разберем этот процесс подробно.

Создание навигации "Предыдущий" и "Следующий" для пользовательского типа записи

Шаг 1: Настройка аргументов запроса

Вы уже правильно сформировали параметры запроса для получения постов типа ‘artists’, отсортированных по menu_order:

$args = array(
    'post_status' => 'publish',
    'post_type'   => array('artists'),
    'orderby'     => array('menu_order' => 'ASC'),
);
$wp_query = new WP_Query($args);

Шаг 2: Получение предыдущего и следующего поста

Чтобы получить посты, следующими и предыдущими по menu_order, используйте функцию get_adjacent_post(). Эта функция позволяет указать порядок, по которому вы хотите получить результаты.

Пример кода для реализации навигации может выглядеть так:

$current_post_id = get_the_ID();

// Получаем предыдущий пост
$previous_post = get_adjacent_post(false, '', true, 'artists');

// Получаем следующий пост
$next_post = get_adjacent_post(false, '', false, 'artists');

if ($previous_post) {
    echo '<a href="' . get_permalink($previous_post->ID) . '" class="prev-post">Предыдущий: ' . get_the_title($previous_post->ID) . '</a>';
}

if ($next_post) {
    echo '<a href="' . get_permalink($next_post->ID) . '" class="next-post">Следующий: ' . get_the_title($next_post->ID) . '</a>';
}

Шаг 3: Объяснение параметров

  • false: означает, что не нужно фильтровать по категории.
  • '': оставляет строку пустой для отсутствия условия на мета-поле.
  • true/false: указывает, что первое значение (для previous_post) возвращает более ранний, а второе (для next_post) — более поздний.
  • 'artists': определяет, что мы работаем с пользовательским типом записи ‘artists’.

Шаг 4: Визуализация

При выводе предыдущего и следующего поста, убедитесь в использовании ссылок и заголовков, которые явно указывают, что вы посещаете другие записи артиста, что будет удобно для посетителей сайта.

Заключение

Теперь ваша навигация "Предыдущий" и "Следующий" будет корректно работать с пользовательским типом записи ‘artists’, отсортированным по menu_order. Используйте псевдонавык, чтобы улучшить пользовательский опыт, повышая удобство навигации по вашему сайту. Если у вас есть дополнительные вопросы или вам требуется помощь в других аспектах, не стесняйтесь обращаться!

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

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