Вопрос или проблема
У меня есть пользовательский тип записи ‘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
. Используйте псевдонавык, чтобы улучшить пользовательский опыт, повышая удобство навигации по вашему сайту. Если у вас есть дополнительные вопросы или вам требуется помощь в других аспектах, не стесняйтесь обращаться!