Вопрос или проблема
Я ищу способ отобразить две кнопки “предыдущая” и “следующая” для навигации на моей странице, но с приведенным ниже кодом я могу показать только одну. Я не понимаю, что не так в коде (ниже):
<div class="cover--nav">
<?php
$currenttPostId = get_the_ID();
$theCategory = get_the_terms(get_the_ID(),'recipe_category');
global $wp_query;
$args = array(
'post_type' => 'recipe',
'orderby' => 'rand',
'post_status' => 'publish',
'recipe_category'=> !empty($theCategory)? $theCategory[0]->slug : '',
'post__not_in' => array($currenttPostId),
'posts_per_page' => 2,
'paged' => $paged //очень важно
);
$wp_query = new WP_Query($args);
$prevNext = array();
if ( $wp_query->have_posts() ) :
while ( $wp_query->have_posts() ) : $wp_query->the_post();
the_title();
endwhile;
endif;
wp_reset_postdata();
$prev_label = "<span class="cover--nav-label">" . _e('Recette précédente', 'marque') . "</span>";
$prev_arrow = "<svg class="icon icon-arrow-prev" role="presentation" focusable="false"><use xlink:href="" . get_template_directory_uri() . "/images/symbol-defs.svg#icon-arrow-prev"></use></svg>";
$prev_text = $prev_label . $prev_arrow;
$next_label = "<span class="cover--nav-label">" . _e('Recette suivante', 'marque') . "</span>";
$next_arrow = "<svg class="icon icon-arrow-next" role="presentation" focusable="false"><use xlink:href="" . get_template_directory_uri() . "/images/symbol-defs.svg#icon-arrow-next"></use></svg>";
$next_text = $next_label . $next_arrow;
the_posts_navigation( array(
'prev_text' => $prev_text,
'next_text' => $next_text,
) );
?>
</div>
Вот что происходит:
Мне хотелось бы получить следующий пример:
Функция _e
сразу выводит переведенный контент в очередь вывода, поэтому строка окажется в html
рано. Если вы просто хотите получить переведенный контент, чтобы добавить его к строке, вам нужна __
.
.
Ответ или решение
Для успешного отображения кнопок "предыдущий" и "следующий" в вашей пользовательской функции навигации в WordPress важно внимательно проанализировать и исправить код. На данный момент, вы используете функцию _e
, которая выводит переведенный контент сразу же в поток вывода, что может приводить к неожиданным результатам. Вместо этого, следует использовать функцию __
для получения переведенного текста.
Вот детальный разбор и описание необходимых изменений:
Анализ существующего кода:
-
Создание WP_Query:
- Вы правильно создаете объект
WP_Query
с помощью аргументов: тип записиrecipe
, категорияrecipe_category
, случайная сортировка и исключение текущего поста из результатов. Однако, стоит уделить внимание переменной$paged
, которая используется для пагинации; она должна быть определена заранее, например, благодаряget_query_var('paged') ? get_query_var('paged') : 1
.
- Вы правильно создаете объект
-
Сбор Posts Navigation:
- Вы задаете строки для кнопок перехода, используя функцию
_e
. Как уже упоминалось, следует заменить_e
на__
для корректного формирования строк перевода.
- Вы задаете строки для кнопок перехода, используя функцию
-
Преобразование HTML в текст:
- В HTML-коде присутствует некоторое смешение кавычек и неправильно закрытых тегов. Следует поправить строки, чтобы избежать синтаксических ошибок.
Исправленный код:
<div class="cover--nav">
<?php
$currenttPostId = get_the_ID();
$theCategory = get_the_terms(get_the_ID(), 'recipe_category');
global $wp_query;
$paged = get_query_var('paged') ? get_query_var('paged') : 1; // Убедитесь, что $paged определен
$args = array(
'post_type' => 'recipe',
'orderby' => 'rand',
'post_status' => 'publish',
'recipe_category' => !empty($theCategory) ? $theCategory[0]->slug : '',
'post__not_in' => array($currenttPostId),
'posts_per_page' => 2,
'paged' => $paged
);
$wp_query = new WP_Query($args);
$prev_label = '<span class="cover--nav-label">' . __('Recette précédente', 'marque') . '</span>';
$prev_arrow = '<svg class="icon icon-arrow-prev" role="presentation" focusable="false"><use xlink:href="' . get_template_directory_uri() . '/images/symbol-defs.svg#icon-arrow-prev"></use></svg>';
$prev_text = $prev_label . $prev_arrow;
$next_label = '<span class="cover--nav-label">' . __('Recette suivante', 'marque') . '</span>';
$next_arrow = '<svg class="icon icon-arrow-next" role="presentation" focusable="false"><use xlink:href="' . get_template_directory_uri() . '/images/symbol-defs.svg#icon-arrow-next"></use></svg>';
$next_text = $next_label . $next_arrow;
the_posts_navigation( array(
'prev_text' => $prev_text,
'next_text' => $next_text,
) );
wp_reset_postdata();
?>
</div>
Обзор и SEO-оптимизация:
- Фокус на ключевых словах: Убедитесь, что ваш текст понятно описывает, как именно вносить изменения, используя понятные заголовки и врезку кода.
- Оригинальный контент: Избегайте шаблонных фраз, акцентируйтесь на конкретные технические нюансы и семантически значимые детали для вашей аудитории.
- Структурированность: Правильная структура кода и текста способствует понятности, приводя к более высокому рейтингу в поисковых системах.
Это решение позволит вам отобразить кнопки навигации "предыдущий" и "следующий" корректно, улучшая пользовательский опыт.