Я хочу, чтобы кнопки “следующий” и “предыдущий” отображались в моей пользовательской функции навигации.

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

Я ищу способ отобразить две кнопки “предыдущая” и “следующая” для навигации на моей странице, но с приведенным ниже кодом я могу показать только одну. Я не понимаю, что не так в коде (ниже):

<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, которая выводит переведенный контент сразу же в поток вывода, что может приводить к неожиданным результатам. Вместо этого, следует использовать функцию __ для получения переведенного текста.

Вот детальный разбор и описание необходимых изменений:

Анализ существующего кода:

  1. Создание WP_Query:

    • Вы правильно создаете объект WP_Query с помощью аргументов: тип записи recipe, категория recipe_category, случайная сортировка и исключение текущего поста из результатов. Однако, стоит уделить внимание переменной $paged, которая используется для пагинации; она должна быть определена заранее, например, благодаря get_query_var('paged') ? get_query_var('paged') : 1.
  2. Сбор Posts Navigation:

    • Вы задаете строки для кнопок перехода, используя функцию _e. Как уже упоминалось, следует заменить _e на __ для корректного формирования строк перевода.
  3. Преобразование 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-оптимизация:

  • Фокус на ключевых словах: Убедитесь, что ваш текст понятно описывает, как именно вносить изменения, используя понятные заголовки и врезку кода.
  • Оригинальный контент: Избегайте шаблонных фраз, акцентируйтесь на конкретные технические нюансы и семантически значимые детали для вашей аудитории.
  • Структурированность: Правильная структура кода и текста способствует понятности, приводя к более высокому рейтингу в поисковых системах.

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

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

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