Как добиться нескольких страниц на одной странице в WordPress

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

Изначально я пытался сделать пользовательскую нумерацию страниц. Например, прямо сейчас я передал номер страницы в качестве параметра URL.

Новости КПТ

/release/?page_news=1

/release/?page_news=2 ...

Ресурс CPT

/release/?page_resource=1

/release/?page_resource=2 ...

Но выглядит неуклюже. Я думал, как это должно выглядеть

Ожидаемые новости CPT

/релиз/новости/

/релиз/новости/2 ...

Ресурс CPT

/выпуск/ресурс/

/выпуск/ресурс/2 ...

Пожалуйста, дайте мне знать, если у кого-нибудь есть лучший подход к этой ситуации.

Вы имеете в виду, что вы хотите разбить на страницы два набора сообщений, которые отображаются одновременно? Затем вам нужно будет передать параметры нумерации страниц для обоих типов – потому что, когда вы находитесь на «странице 5» новостей и теперь хотите перейти со «страницы 13» на «страницу 14» ресурсов, то нумерация страниц новости все равно должны быть на «странице 5» на следующей результирующей странице, верно?

C3roe 26.08.2024 12:43

Я показал по 5 постов каждый cpt на 1 странице, обе пагинации работают отдельно. Кроме того, когда мы переходим на любую другую страницу 2 +, пагинация других страниц снова сбрасывается на 1. Только тогда можно будет достичь ожидаемого результата.

Mahesh Thorat 26.08.2024 12:50
Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
0
2
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я попробовал ниже, чтобы это работало.

Создана пользовательская перезапись

  1. Регистрация переменных запроса. Код добавляет var1 и var2 в качестве пользовательских переменных запроса с помощью фильтра query_vars.

  2. Правило перезаписи: создается пользовательское правило перезаписи, которое сопоставляет URL-адреса в формате /payments-slug/var1-value/var2-value/ и перезаписывает их в соответствующие index.php с соответствующими параметрами запроса.

<?php
global $wp;
@$wp->add_query_var('var1');
@$wp->add_query_var('var2');

add_filter('query_vars', 'wpse12965_query_vars');
function wpse12965_query_vars($query_vars)
{
  $query_vars[] = 'var1';
  $query_vars[] = 'var2';
  return $query_vars;
}
add_action('init', 'wpse12065_init');
function wpse12065_init()
{
  global $payments_page_id;
  $post = get_post($payments_page_id);
  $slug = @$post->post_name;
  add_rewrite_rule(
    $slug . '(/([^/]+))?(/([^/]+))?/?(/([^/]+))?(/([^/]+))?/?',
    'index.php?pagename=' . $slug . '&var1=$matches[2]&var2=$matches[3]',
    'top'
  );
}

Для разбиения на страницы добавлен фрагмент кода ниже внутри каждого wp_query.

  1. Всего страниц и диапазона: рассчитывается общее количество страниц и задается диапазон отображаемых ссылок на страницы.

  2. Цикл пагинации: он перебирает все страницы и генерирует список номеров страниц в виде ссылок. Текущая страница выделена, а на другие страницы имеются ссылки.

  3. Вывод: каждая ссылка на страницу ведет на URL-адрес, основанный на названии таксономии ($taxName) и номере страницы.

<div class = "pagination">
    <div class = "moreCenter animateme animated">
        <div class = "paginationBox">
            <?php
            $totalPages = $wc_query->max_num_pages;
            $range = 4;
            $showitems = ($range * 2) + 1;
            for ($i = 1; $i <= $totalPages; $i++) {
                if (1 != $totalPages && (!($i >= $paged + $range + 1 || $i <= $paged - $range - 1) || $totalPages <= $showitems)) {
                    $page_url = get_permalink() . '' . $taxName . '/' . $i;
                    echo ($paged == $i) ? "<span class=\"current\">" . $i . "</span>" : "<a href='" . $page_url . "' class=\"inactive\">" . $i . "</a>";
                }
            }
            ?>
        </div>
    </div>
</div>

Другие вопросы по теме

Удалить страну из разрешенных стран, если определенная категория продуктов находится в корзине WooCommerce
Подождите, пока элемент существует
WordPress: Как предотвратить использование функции одного плагина другим?
Javascript не работает должным образом в виджете Loop Grid (Elementor Pro)
Настраиваемое поле не отображается в ответе WordPress REST API
Используйте 2 десятичных знака для суммы скидки в Woocommerce с настройками 0 десятичных знаков
Страница индивидуальных заказов WooCommerce добавляет настраиваемое поле роли клиента
Добавить выбранное значение переключателя в качестве данных пользовательского элемента корзины через Ajax. Добавить в корзину в цикле продуктов WooCommerce
Woocommerce Проблема с крючками для одного продукта: заменить кнопку «Добавить в корзину»
Создание пользовательской кнопки добавления в корзину для переменных продуктов с вариациями в WooCommerce