- Как вывести все категории (рубрики) товаров WooCommerce в WordPress?
- Одноуровневый вывод всех категорий (рубрик) товаров WooCommerce в любом месте сайта в WordPress
- Многоуровневый (древовидный) вывод всех категорий (рубрик) товаров WooCommerce в любом месте сайта в WordPress
- Как вывести подкатегории WooCommerce отдельно от товаров в магазине
- Хак вывода подкатегорий WooCommerce
- ‘; echo ‘slug . ‘»>’; echo $term->name; echo »; echo ‘
- Отображение категорий, подкатегорий и продуктов WooCommerce в отдельных списках
- Что вам понадобится
- Перед началом работы: параметры по умолчанию
- Идентификация кода WooCommerce использующего выходные категории и продукты в коллекции
- Создание плагина
- Написание нашей функции
- Стилизация списков категорий
- Резюме
Как вывести все категории (рубрики) товаров WooCommerce в WordPress?
Я думаю, что многие согласятся со мной, что WooCommerce – это отличное решение для CMS WordPress, с помощью которого можно организовать свой собственный интернет-магазин.
Мы уже затрагивали тему этого дополнения и CMS в общем. Так что сегодня я покажу вам, как просто и без всяких плагинов вывести два вида меню (кликабельный список всех категорий товаров) на вашем сайте.
Одноуровневый вывод всех категорий (рубрик) товаров WooCommerce в любом месте сайта в WordPress
Начнем с самого простого примера – одноуровневого меню со всеми категориями, где есть хотя бы 1 товар.
Вид функции (вставляется в файл functions.php, который находится в папке темы сайта):
Этот код вы вставляете в нужное вам место темы сайта. Важные моменты я пометил в функции.
Основные типы сортировок:
- id или term_id – по ID.
- name – по названию.
- slug – по альтернативному названию.
- description – по описанию.
- meta_value – по значению произвольного поля.
- none – не сортировать.
По умолчанию – name.
Допустимые порядки сортировки:
- ASC – от меньшего к большему (по порядку – 1, 2, 3 или a, b, c и т.д.);
- DESC – от большего к меньшему (в обратном порядке – 3, 2, 1 или c, b, a и т.д.).
По умолчанию – ASC.
Многоуровневый (древовидный) вывод всех категорий (рубрик) товаров WooCommerce в любом месте сайта в WordPress
Поскольку в WooCommerce (как, собственно, и в WordPress) есть возможность вложения категорий, будет не лишним показать вам, как же правильно вывести их все с учетом их структуры (вложенности).
Вставляете так же в файл functions.php, и использование (вывод):
Вставляете в нужное место в тему вашего сайта. Допустимые настройки вывода – как и в первом варианте.
Стилизацию меню в этой статье я не рассматриваю, думаю, ее вы можете сделать и сами.
Общий класс меню первого уровня – «main_categories_list», второго и последующего – «sub_categories_list» + «sub_categories_list_N», где N – уровень вложения. Цепляетесь за них и настраиваете вид так, как вам нужно.
Источник
Как вывести подкатегории WooCommerce отдельно от товаров в магазине
После интересной заметки о наличии товара в Woocommerce рассмотрю задачу, связанную с подкатегориямии в магазине. Изначально хотел написать более масштабный пост по категориям, но позже решил сузить тему чтобы вас не запутывать. В плагине есть опция с 3-мя способами как можно показывать продукцию в разделах: 1) только товары; 2) подкатегории; 3) совместить оба варианта. В ранних версиях она находилась в меню «Настройки» — «Товары» — «Отображение», позже перенесли в настройщик темы.
Многие используют последний метод дабы посетитель мог самостоятельно выбирать что делать: переходить в нужный архив или сразу просматривать все товары в одном месте. Его и разберем. Разработчикам, кстати, может также пригодиться сниппет позволяющий скрыть категорию и товары из Woocommerce каталога.
К сожалению, в шаблоне WooCommerce для страницы каталога все элементы выводятся «слитно» — и продукция, и разделы размещены в совместном блоке кода.
На скриншоте выше видно как объекты отображаются в один ряд: сначала идут WooCommerce подкатегории (в примере без превью), а затем сразу товары. Основная цель хака заключается в том, чтобы отделить эти два, разных по сути, понятия. Реализация подсмотрена из этой статьи. Однако там автор создавал отдельный модуль для решения, я же предлагаю просто добавить весь код в файл функций.
Хак вывода подкатегорий WooCommerce
1. Первым делом заходим в раздел «Внешний вид» — «Настройки» — «WooCommerce», где для опции «На странице категории» выбираем показ только самой продукции:
Если у вас более ранние версии модуля магазина, то данная опция находится непосредственно в его настройках во вкладке «Товары» — «Отображение»:
2. Открыв файл archive-product.php в папке wp-content/plugins/woocommerce/templates, увидите как формируется структура страницы архива магазина.
В частности найдете там функцию woocommerce_product_subcategories(), которая производит вывод категорий и подкатегорий WooCommerce перед обработкой непосредственно товаров.
Хорошая новость в том, что вы без проблем можете переопределить данную функцию в своем шаблоне, а затем вызывать ее в хуке woocommerce_before_shop_loop.
3. Вам нужно добавить в файл функций (для темы магазина это вероятнее всего custom-function.php) следующие строки:
‘; echo ‘slug . ‘»>’; echo $term->name; echo »; echo ‘
В данном коде определяется ID объекта из query запроса и осуществляется поиск всех элементов магазина, для которых он является родительским. Дальше в блоке foreach задается как именно вы хотите вывести подкатегории в WooCommerce. Здесь:
- woocommerce_subcategory_thumbnail — отвечает за миниатюру (если нужно);
- название $term->name оборачивается в ссылку (тег А);
- можете поменять классы стилей в элементах списка.
Сохраняете файл, загружаете его обратно на FTP и проверяете как все работает.
4. Изначально оформление будет смотреться немного коряво, поэтому вам придется добавить стили (в main-style.css, style.css или другой файл):
Это лишь пример оформления от автора сниппета, изменяйте его как угодно под свою тему. Строки после min-width:768px отвечают за меньшие версии экрана. После внесения правок, смотрите результат. Не забывайте, кстати, следить за правильным размером изображений товара WooCommerce дабы фотки не получались размытыми.
5. Если вам нужно чтобы отображались даже те подкатегории, где нет продукции, добавьте дополнительный параметр в $args при вызове функции get_terms (третья строка в коде):
$args = array( ‘parent’ => $parentid, ‘hide_empty’ => false );
Я тестировал данный пример на реальном сайте — все работает отлично. Возможно, какими-то хитрыми CSS методами получится все реализовать без дополнительной функции либо данная фишка исправлена в новой WooCommerce 3.0 (я тестировал на ветке 2.6.x), но, как бы там ни было, этот пример будет хорошей практикой начинающим WordPress разработчикам.
Если есть что добавить по выводу подкатегорий в WooCommerce пишите ниже: вопросы, дополнения, замечания.
Источник
Отображение категорий, подкатегорий и продуктов WooCommerce в отдельных списках
Russian (Pусский) translation by Marat Amerov (you can also view the original English article)
WooCommerce дает вам несколько вариантов того, что вы можете отображать на своих страницах коллекций:
- продукты
- категории (на главной странице магазина) или подкатегории (на страницах категорий)
- как продуктов, так и категорий.
Когда я настраиваю магазин, я обычно выбираю третий вариант: продукты и категории/подкатегории. Это означает, что посетители моего магазина могут выбирать продукты прямо с домашней страницы или уточнять их поиск, перейдя в коллекцию категории продуктов.
Тем не менее, есть одна причина отказаться от этого подхода: он отображает категории/подкатегории вместе, без разделения между ними. Это означает, что если ваши изображения продукта имеют разные размеры , макет может выглядеть немного грязным. Даже если ваши изображения имеют одинаковый размер, если одна из строк на странице коллекции включает в себя как категории, так и продукты, отсутствие кнопки «Добавить в корзину» для категорий делает эту строку неопрятной, поскольку не все ее элементы имеют одинаковые размеры.
В этом уроке я покажу вам, как показывать категории в отдельном списке перед отображением продуктов.
Чтобы сделать это, мы выполним четыре шага:
- Определите код, используемый WooCommerce для вывода категорий и подкатегорий на странице коллекции.
- Создайте плагин для нашего кода.
- Напишите функцию для размещения категорий или подкатегорий перед списками продуктов.
- Стиль вывода.
Но прежде чем вы начнете, вам понадобится установка WooCommerce с добавлением продуктов, а также настройки категорий продуктов и подкатегорий.
Что вам понадобится
Чтобы двигаться дальше, вам понадобятся:
- Установка WordPress для разработки.
- Редактор кода.
- Установка и активация WooCommerce.
- Добавленные продукты: я импортировал данные фиктивного продукта, которые поставляются с WooCommerce; для получения подробной информации о том, как это сделать, см. это руководство.
- Активная совместимая с WooCommerce тема — я использую Storefront.
Перед началом работы: параметры по умолчанию
Давайте посмотрим, что WooCommerce дает нам по умолчанию.
Я начал с добавления некоторых изображений в категории товаров и подкатегории, поскольку фиктивные данные WooCommerce не включают их. Я просто использовал изображение одного из продуктов из каждой категории или подкатегории, как вы можете видеть на скриншоте:
Теперь давайте посмотрим, как WooCommerce отображает категории продуктов и продукты на страницах коллекций.
Если вы еще этого не сделали, перейдите в WooCommerce > Settings, выберите вкладку Products, а затем выберите опцию Display. Для каждого из параметров Shop Page Display и Default Category Display выберите Show both:
Нажмите кнопку Save changes, чтобы сохранить настройки и перейти на страницу магазина вашего сайта. Мой результат выглядит так:
Это происходит, потому что у меня есть три категории товаров, и мои изображения категорий имеют тот же размер, что и мои изображения продукта, они выглядит довольно аккуратно. Но вот одна из коллекций категорий продуктов:
Поскольку эта категория имеет две подкатегории, первый продукт отображается вместе с ними, в сетке три элемента. Я хочу сделать мои категории и подкатегории более заметными и просто представить их отдельно от списков продуктов. Так что давайте сделаем это.
Идентификация кода WooCommerce использующего выходные категории и продукты в коллекции
Первый шаг — определить, как WooCommerce выводит категории и подкатегории. Итак, давайте углубиться в исходный код WooCommerce, чтобы найти соответствующую функцию.
Файл WooCommerce использует для отображения страниц коллекций archive-product.php , который находится в папке templates .
Внутри этого файла вы можете найти код, который выводит категории и продукты:
Таким образом, определенна функция woocommerce_product_subcategories() , которая выводит категории или подкатегории перед запуском цикла, который выводит продукты.
Функция подключаемая, что означает, что мы можем переопределить ее в нашей теме. К сожалению, это не совсем так, поскольку WooCommerce имеет встроенный стиль для очистки элементов, который будет отображаться в начале строки с отображением по умолчанию.
Поэтому вместо этого мы отключим отображение категорий и подкатегорий на наших страницах коллекций, чтобы отображались только продукты. Затем мы создадим новую функцию, которая выводит категории товаров или подкатегории, и подключаем их к экшену woocommerce_before_shop_loop , убедившись, что мы используем высокий приоритет, чтобы он срабатывал после функций, которые уже подключены к этому экшену.
Примечание: поскольку WooCommerce добавляет очищения к каждому третьему списку продуктов, мы не можем использовать функцию woocommerce_product_subcategories() или отредактированную ее версию для отображения категорий. Это связано с тем, что он очистит третью, шестую (и т. д.) категорию или продукт, даже если мы используем эту функцию для отображения категорий отдельно. Мы могли бы попытаться переопределить это, но проще просто написать нашу собственную функцию.
Итак, давайте создадим плагин, который сделает это.
Создание плагина
Создайте в вашем каталоге wp-content/plugins новую папку и дайте ей уникальное имя. Я называю tutsplus-separate-products-categories-in-archives . Внутри создайте новый файл, также с уникальным именем. Я использую то же имя: tutsplus-separate-products-categories-in-archives.php .
Откройте файл и добавьте к нему этот код:
Возможно, вы захотите отредактировать данные автора, так как это ваш плагин, который вы пишете. Сохраните файл и активируйте плагин через администратор WordPress.
Написание нашей функции
Теперь давайте напишем функцию. Но прежде чем начать, отключите списки категорий на экранах администратора. Перейдите в WooCommerce > Settings, выберите вкладку Products, а затем выберите параметр Display. Для каждого из Shop Page Display и Default Category Display выберите Show products. Сохраните изменения.
Теперь ваша страница магазина будет выглядеть примерно так:
В своем файле плагина добавьте следующее:
Теперь добавьте этот код внутри функции:
Давайте посмотрим, что делает эта функция:
- Она идентифицирует текущий запрошенный объект и определяет его id как $parentid .
- Она использует get_terms() для определения условий с текущим запрошенным элементом в качестве родителя. Если это главная страница магазина, она вернет категории верхнего уровня; если это коллекция категории, она вернет подкатегории.
- Затем она проверяет наличие каких-либо условий, прежде чем открывать цикл foreach и элемент ul .
- Для каждого условия она создает элемент li , а затем выводит изображение категории с помощью woocommerce_subcatgeory_thumbnail() , за которым следует название категории в ссылке на ее коллекцию.
Теперь сохраните файл и обновите главную страницу магазина. У меня выглядит так:
Отображаются категории, но им нужен стиль. Давайте следующим сделаем это.
Стилизация списков категорий
Чтобы мы могли добавить стиль, нам нужна таблица стилей внутри нашего плагина, которую нам нужно будет поставить в очередь.
В своей папке плагина создайте папку css и внутри нее создайте файл с именем style.css .
Теперь, в вашем файле плагина, добавьте это выше функции, которую вы уже создали:
Это правильно помещает таблицу стилей, которую вы только что создали.
Теперь откройте таблицу стилей и добавьте код ниже. WooCommerce использует сперва мобильный стиль, поэтому мы тоже будем его использовать.
Я скопировал точные ширины и отступы из стиля, используемого WooCommerce.
Теперь проверьте свою главную страницу магазина. Вот моя:
Вот коллекция категории Music:
И вот как это выглядит на маленьких экранах:
Резюме
Категории продуктов — отличная функция WooCommerce, но способ отображения не всегда идеален. В этом уроке вы узнали, как создать плагин, который выводит категории продуктов или подкатегории отдельно из списков продуктов, а затем вы ввели списки категорий.
Вы можете использовать этот код для вывода списка категорий или подкатегорий в другом месте на странице (например, под продуктами), подключив функцию к другому хуку экшена в файле шаблона WooCommerce.
Если вы в настоящее время запускаете магазин, который хотите расширить, или вы ищете дополнительные плагины для изучения, связанные с WooCommerce, не стесняйтесь посмотреть, какие плагины доступны на Envato Market.
Источник