Woocommerce pagination не работает

Содержание
  1. Не работает пагинация. Сайт на wordpress?
  2. Проблемы с пагинацией
  3. 1 ответ 1
  4. 404 ошибка в пагинации категории woocommerce при общей базе урлов /shop/
  5. wladm
  6. Woocommerce pagination не работает
  7. Другие записи
  8. Сделать поля для регистрации при оформлении заказа обязательными для заполнения
  9. Добавить произвольное поле во вкладку «вариативный товар»
  10. Как скрыть другие доставки когда активна бесплатная доставка
  11. WooCommerce 2,6 — Скрыть методы доставки, когда доступна бесплатная доставка
  12. Удаление «хлебных крошек»
  13. Как убрать количество товара в категории?
  14. Зависимость оплаты от выбранной доставки
  15. WooCommerce. Как изменить текст кнопки «Add to cart»
  16. Направлять копии всех электронных сообщений вторичным получателям
  17. Замена символа рубля на свое значение.
  18. paginate_links() – как сделать пагинацию WordPress
  19. Пример. HTML пагинации по умолчанию
  20. Как изменить ссылки ← Ранее и Далее →
  21. Количество отображаемых ссылок
  22. Формат отображения
  23. Кастомные пагинации для любых целей
  24. Заключение

Не работает пагинация. Сайт на wordpress?

Имеется сайт на вордпресс. Шаблон делал сам, после того как внес все изменения и прописал все функции, сталкнулся с тем что не работает пагинация в рубрике НОВОСТИ. На сайте она одна. вот код файла category.php

страница открывается, вывод новостей работает, сам код все отрабатывает. пагинация выводится плагином wp_pagenavi, при нажатии на страницу два, в крошках видно что страница поменялась, путь меняется, но вот новости остаются те же.

  • Вопрос задан более двух лет назад
  • 762 просмотра

а как они будут меняться, если вы каждый раз делаете выборку по одной и той же странице?

раз уж вы делаете кастомный запрос, то вот сюда
$query = new WP_Query( ‘cat=2&posts_per_page=3’ );
нужно передавать текущую страницу

но вообще все сделано неправильно. правильнее было повесить фильтр на pre_get_posts и там выводить нужное количество постов в категориях.
как сейчас у вас делается несколько лишних запросов на этой странице и паджинация будет работать не корректно.
допустим, у вас 100 постов в этой категории, в настройках сайта указано выводить по 10 (всего 10 страниц в архиве этой категории). вот этим кодом вы ожидаете, что будет выводится по 3 и в архиве категории должно получиться 34 страницы. но если попробуете открыть страницу /page/25, то оно выдаст ошибку

Источник

Проблемы с пагинацией

Никак не могу прикрутить пагинацию к этой странице: страница скидок.

Использую woocommerce вместе с темой: savoy.nordicmade.com

Скидки вывожу шордкодом:

Поставил еще плагин «Shortcode Pagination for WooCommerce»… На странице категории (из коробки темы) все работает, на странице скидок — нет ( подключил уже необходимые скрипты, но все равно не работает)…

Что я еще упустил?

1 ответ 1

Судя по актуальному коду, выводящему шорткоды WooCommerce, в файле wp-content/plugins/woocommerce/includes/shortcodes/class-wc-shortcode-products.php , атрибут per_page устарел и заменен на limit . Атрибут pagination не существует и, насколько мне известно, никогда не существовал.

Пагинация в выводе шорткодом не предусмотрена. Атрибут limit ограничивает общее количество выводимых товаров, но не создает пагинацию. Об этом же написано в документации.

Это и понятно — у вас на сайте может быть в блоге, скажем, много записей, будет работать пагинация блога, а в записях может присутствовать шорткод WooCommerce. И как тогда разруливать две пагинации?

Резюме такое. Пагинацию через стандартный шорткод сделать нельзя. Надо создавать свой цикл по продуктам через WP_Query и прикручивать к нему свою пагинацию.

Читайте также:  Не работает подача бумаги мфу

Плагин Shortcode Pagination for WooCommerce прокомментировать не могу, не работал с ним.

Источник

404 ошибка в пагинации категории woocommerce при общей базе урлов /shop/

wladm

Новичок

Не могу найти решение банальной вещи — объединение базы урлов товаров и категорий woocommerce.

Единственное рабочее решение для объединения нашел такое:

В Настройки -> Постоянные ссылки:
База категорий товара делаем shop
Произвольная база меняем на /shop/%product_cat%/

и добавляем в functions.php код:

После этого все хорошо работает, кроме пагинации.
Причем, на страницах подкатегорий она работает https://dverinevada.ru/shop/vhodnye-dveri/kondor/page/2/
а на страницах категорий выдает 404 ошибку https://dverinevada.ru/shop/vhodnye-dveri/page/2/

Чтобы не было 404 ошибки, можно добавить еще такой код в functions.php

Тогда страницы пагинации 404 ошибку не выдают, но не выводят товары (вместо них надпись «Товаров, соответствующих вашему запросу, не обнаружено.»).
Напомню. что на страницах пагинации в подкатегориях все товары нормально отображаются.

Прошу помощи в решении этой проблемы, чтобы закрыть данный вопрос раз и навсегда.
(если у вас получается привести товары и категории к общей базе, но без /shop/ то тоже хотелось бы увидеть данное решение.)

Источник

Woocommerce pagination не работает

Пагинации (постраничной навигации) при использовании шорткодов в Woocommerce по умолчанию нет — по рядам причин. Но это можно исправить добавив в файл functions.php тему (он лежит в корне папки темы /wp-content/themes/Ваша-тема) добавляем этот код

И все у вас появиться! =)

Если страшно лесть в код и нету доступа к фтп то можно воспользоватся плагином Shortcode Pagination for WooCommerce

Специальный специалист по специальной работе. Разработка и доработка интернет магазинов с нуля на woocommerce и wordpress. Разработка новых компонентов

Втавил код в function.php
вылезла ошибка syntax error, unexpected ‘function’ (T_FUNCTION).
Подскажите пожалуйста как лечить?
И в чем беда?

Другие записи

Сделать поля для регистрации при оформлении заказа обязательными для заполнения

Добавить произвольное поле во вкладку «вариативный товар»

//Display Fields add_action( ‘woocommerce_product_after_variable_attributes’, ‘variable_fields’, 10, 2 ); //JS to add fields for new variations add_action( ‘woocommerce_product_after_variable_attributes_js’, ‘variable_fields_js’ ); //Save variation fields add_action( ‘woocommerce_process_product_meta_variable’. читать подробнее

Как скрыть другие доставки когда активна бесплатная доставка

Ранее я писал как скрыть доставки если по логике должна быть активна бесплатная доставка Эта система хорошо отработала на. читать подробнее

WooCommerce 2,6 — Скрыть методы доставки, когда доступна бесплатная доставка

WooCommerce 2,6 приносит значительные изменения в модуль доставки , включая введение судоходства зоны. Эти изменения нарушают ряд существующих фрагментов . читать подробнее

Удаление «хлебных крошек»

/** * Remove WooCommerce BreadCrumb * */ remove_action( ‘woocommerce_before_main_content’, ‘woocommerce_breadcrumb’, 20); 12345 /*** Remove WooCommerce BreadCrumb**/remove_action( ‘woocommerce_before_main_content’, ‘woocommerce_breadcrumb’, 20); читать подробнее

Как убрать количество товара в категории?

Как убрать количество товара в категории? Для того чтобы убрать подсчет товаров в категориях, на странице магазина, всего лишь надо. читать подробнее

Зависимость оплаты от выбранной доставки

Если нам надо скрыть какой-то способ оплаты при Самовывозе например оплата через PayPal то для этого нам понадобится такой. читать подробнее

WooCommerce. Как изменить текст кнопки «Add to cart»

Этот туториал покажет, как изменить текст кнопки «Add to cart» в шаблонах WooCommerce. С помощью FTP-клиента на вашем сервере откройте. читать подробнее

Читайте также:  Krita как настроить нажим пера

Направлять копии всех электронных сообщений вторичным получателям

/** * WooCommerce Extra Feature * ————————— * * Add another email recipient to all WooCommerce emails * */ function woo_cc_all_emails() < return 'Bcc: youremail@yourdomain.com'. читать подробнее

Замена символа рубля на свое значение.

Частенько делая катало где впринцепи не нужна фиксированная цена, а например написать руб\час. Для этого я использую хук который. читать подробнее

Источник

Помню времена, когда обязательным плагином к установке был WP-Pagenavi, ведь именно благодаря ему на сайтах на WordPress удавалось создать постраничную навигацию.

А по умолчанию это всё выглядело как-то так:

Старая навигация WordPress при помощи функций previous_posts_link() и next_posts_link()

Теперь же, благодаря функции paginate_links() мы можем создавать пагинации без плагина!

Однако несмотря на то, что функция присутствует в ядре WordPress (насколько я знаю, с 2009 года), полное избавление от плагинов из серии WP-Pagenavi произошло уже после появления функций: the_posts_pagination() и get_the_posts_pagination() в 2014-м, хотя обе эти функции работают на основе paginate_links() .

Функция содержит лишь один необязательный параметр $args – массив аргументов, ну а в нём уже свои параметры.

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

Окей, функция не совсем простая для понимания, поэтому не буду тупо переводить английскую документацию, а опишу принцип её работы. Вы не против? 😁

Пример. HTML пагинации по умолчанию

Прежде всего – функция возвращает вам HTML постраничной навигации, который по умолчанию для страницы блога выглядит так:

Если вам нравится это, то вы уже можете спокойно использовать эту функцию для пагинации на страницах блога прямо так echo paginate_links(); и забыть обо всём остальном и не читать дальше пост.

Как изменить ссылки ← Ранее и Далее →

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

__() – это функция перевода. Подробнее про локализацию в WordPress рекомендую почитать в этом уроке.

Из креативных вариантов перевода я помню встречал что-то подобное:

Что позволяет преобразить нашу пагинацию в такой вид:

Количество отображаемых ссылок

Есть какое-то определённое количество ссылок которые отображаются до «…» от концов и от центра (текущей страницы), на скриншоте ниже я думаю очень даже понятно, что есть что.

mid_size по умолчанию равен 2, end_size по умолчанию 1. Если вдруг нас это не устраивает, то в нашей власти это изменить:

Формат отображения

Прежде, чем перейти к самому интересному, у нас остаётся ещё несколько дополнительных параметров, которые мы не рассмотрели:

show_all (логическое) принимает значения true или false (по умолчанию), если установить true , то будут отображаться все ссылки на страницы без добавления «…», before_page_number (строка) текст или HTML код, который добавится перед каждой цифрой в пагинации, ссылки назад и далее не считаются! 😈 after_page_number (строка) то же самое,что и предыдущий параметр, но только после цифр, type (строка) тип отображения, может принимать значения plain (по умолчанию), array – возвращает ссылки в виде массива или же list – в виде маркированного списка

    .
Читайте также:  Как настроить iptv инфолада

Кастомные пагинации для любых целей

Вот мы и перешли к самому интересному. Для того, чтобы сразу же дать вам ясное представление, о чем мы будем тут говорить, я рекомендую взглянуть на этот скриншотец:

Итак, для того, чтобы создать свою собственную пагинацию для абсолютно чего угодно, мы должны знать кое-то о тех параметрах функции, о которых я пока не упомянул.

base (строка) то, как выглядт URL нашей страницы пагинации в виде https://misha.agency/all_posts.php%_% , в этой конструкции %_% будет заменён на значение параметра format , то есть например на /page/1 или на ?pg=1 – короче говоря на что угодно, что используется у вас при пагинации в урле. По умолчанию (то есть для страницы блога) берётся значение функции get_pagenum_link() , потом отсекаются все параметры после ? и в конце добавляется %_% , format (строка) чтобы будем вкидывать в конец урла для обозначения страниц пагинации, например ?page=%#% . Но и тут есть реплейсмент в виде %#% , который при генерации HTML ссылок будет преобразован во что? В номер страницы конечно же. Параметр не берётся из потолка, а берётся из кода, который у нас выводит цикл с учетом постраничной навигации, total (целое) сколько всего страниц у нас получилось, current (целое) на какой странице мы находимся в данный момент

Это основные параметры, которые нам понадобятся для создания постраничной, но есть ещё два, которые могут быть вам полезны:

add_fragment (строка) что добавить в конце каждой ссылки, например #continue-reading add_args (массив) параметры урл, которые мы можем накинуть ещё сверху наряду с существующими, например array( ‘param1’ => ‘value1’ ) .

Но конечно же вся эта теория не имеет никакого смысла без хорошего примера кода. Как вариант давайте замутим пагинацию для произвольного неосновного цикла, написанного на WP_Query.

Во-первых, давайте определимся, на какой странице у нас будет этот дополнительный цикл, что собственно повлияет на значение параметра base , у меня цикл будет на главной, значит base будет site_url() . ‘%_%’ .

Во-вторых, нужно решить, как мы будем обозначать пагинацию в УРЛ сайта. Так как мы сейчас не планируем мутить дополнительных правил в htaccess, и всё должно быть найс энд изи, то я рекомендую использовать для этого обычный параметр в URL, а чтобы потешить моё чсв было легче разобраться, назовём параметр misha . Ссылки тогда будут такие: https://домен/?misha=2 (вторая страница).

У меня этот код заработал идеально ✨

Заключение

Ни разу не ожидал, что получится такой объёмный пост. Но по крайней мере теперь становится ясно, что можно выкинуть в помойку не только плагины постраничной навигации, но и функции the_posts_pagination() и get_the_posts_pagination() , рассудите сами – зачем вам лишняя обёртка функции, которую вам ещё потом придётся хукать через navigation_markup_template , чтобы изменить/удалить заголовок пагинации 😁

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

Источник

Оцените статью