Как настроить индивидуальное отображение для архивов WooCommerce и страниц категорий товаров?

22 мар. 2014 г., 18:03:25
Просмотры: 18.1K
Голосов: 3

Что сделано

Привет! Я понимаю, что мой вопрос тесно связан с распространенными вопросами о WooCommerce.

Я использовал различные хуки и фильтры WooCommerce, а также создавал копии оригинальных файлов шаблонов в дочерней теме в папке woocommerce/.

Это работает, и я могу вносить изменения для интеграции WooCommerce в свою тему.

Что я пытаюсь сделать

WooCommerce использует archive-product.php для отображения категорий товаров. Этот же шаблон используется для отображения товаров в категории.

Я хочу стилизовать страницу товаров совсем иначе, чем страницу категории, и создать другой шаблон архива для отображения товаров категории

Я думаю, что лучшим вариантом будет использование нового шаблона products-product.php. Мне очень интересно глубже изучить плагин, поэтому я стараюсь избегать быстрых CSS-исправлений и хочу научиться использовать файлы шаблонов и хуки.

Буду очень признателен за советы или указание правильного направления.

9
Комментарии

Вы пробовали использовать плагин для создания страниц? Вы можете создать пользовательскую страницу archive-products и отображать товары так, как вам нравится. Есть несколько бесплатных конструкторов страниц, которые очень хороши (например: http://siteorigin.com/page-builder/)

item251 item251
22 мар. 2014 г. 18:24:27

Этот вопрос был отложен, так как считается не по теме. Можете кто-нибудь кратко объяснить, почему? Я обнаружил очень простой ответ, который специфичен для этого плагина, а не для общего программирования. Я вижу много очень похожих вопросов на этом сайте. Спасибо.

JohnLion JohnLion
22 мар. 2014 г. 20:51:37

Вы правы, есть много похожих вопросов, которые не считаются не по теме, но в целом правило гласит: »мы не занимаемся (..) вопросами, касающимися сторонних плагинов и тем«, как указано на странице о тематике. Это и является причиной откладывания вопроса, поскольку WooCommerce явно является сторонним плагином. Кстати, пожалуйста, не пытайтесь продвигать свой вопрос, делая незначительные/несущественные правки, просто чтобы он оставался в очереди.

Nicolai Grossherr Nicolai Grossherr
22 мар. 2014 г. 23:17:40

Приношу извинения, я понял ваш вопрос так, будто дело было в формулировке. Не могли бы вы сказать, будет ли этот вопрос удален? Я считаю, что он должен быть удален, так как ни к чему не ведет, а ответы вводят в заблуждение относительно реального решения. Спасибо за объяснение по поводу вопроса. Теперь я понимаю.

JohnLion JohnLion
22 мар. 2014 г. 23:39:38

Вы всегда можете удалить свои вопросы самостоятельно. Я не на 100% уверен, как это обрабатывается, если вопрос остается, но помечен как "на удержании" - думаю, если есть ответы, он останется, по крайней мере какое-то время. Но, хотя я не проверял, я почти уверен, что мой первый ответ является достаточным решением этой проблемы. Кстати, я обновил свой ответ, добавив информацию о том, как сделать это более специфично для WooCommerce.

Nicolai Grossherr Nicolai Grossherr
22 мар. 2014 г. 23:47:04

Кстати, извините, если я вас несправедливо обвинил.

Nicolai Grossherr Nicolai Grossherr
22 мар. 2014 г. 23:59:12

Отлично, @ialocin, спасибо, что нашли время. Я обнаружил, что страница категории продуктов обрабатывалась в файле taxonomy-product_cat.php. По сути, он вызывает шаблон archive-product.php. Поэтому я просто изменил его, чтобы загружался мой собственный шаблон. Это был один из немногих файлов, которые я не открывал. Я согласен, что предложенное вами решение — идеальный метод для достижения моей цели, и уверен, что он поможет мне в будущем. А также это было знакомство с template_include. Никаких обид. Я только учусь правильно пользоваться форумом и быть частью сообщества WordPress. Удачи!

JohnLion JohnLion
24 мар. 2014 г. 01:43:50

Это вопрос по WordPress, который также относится к плагинам WP. Ответ — это код WordPress. В сети есть более подходящие ответы по WordPress, но поскольку вопрос был закрыт, сообщество не может дополнить его. Что было достигнуто его закрытием?

Jon Jon
5 июн. 2015 г. 11:46:42

Эта политика оффтопика действительно раздражает и, честно говоря, глупа. WordPress — это платформа с открытым исходным кодом, и многие люди работают с WooCommerce. Когда мы хотим его изменить, сломать или модифицировать, StackExchange должен быть здесь, чтобы помочь нам.

Dave Hilditch Dave Hilditch
9 сент. 2015 г. 19:20:18
Показать остальные 4 комментариев
Все ответы на вопрос 1
3

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

Код:

// загружаем шаблон архива категорий WooCommerce
add_filter( 'template_include', 'wpse138858_woocommerce_category_archive_template' );
function wpse138858_woocommerce_category_archive_template( $original_template ) {
    // загружаем шаблон условно, только если находимся в архиве категорий WooCommerce
    if ( is_product_category() ) {
        // сначала нужно создать шаблон, который вы хотите использовать
        return get_template_directory().'/woocommerce-category-archive.php';
    } else {
        return $original_template;
    }
}

Дополнительная информация:

Примечания:

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

Редактирование:

Если вы хотите сделать это "по-woocommerce", вам понадобится функция wc_get_template_part() — ранее, до версии WC 2.1, использовалась функция woocommerce_get_template_part(), теперь устаревшая. Я уже давал ответ о том, как использовать последнюю, и вы можете применить его к новой функции — функционал остался тем же. В вашем случае, вероятно, стоит использовать соответствующий хук wc_get_template_part. С этой информацией вы сможете сделать всё "по-woocommerce".

22 мар. 2014 г. 18:26:46
Комментарии

Спасибо за совет. Я все еще в поисках решения, которое больше подходит для WooCommerce, но этот вариант сработает. Еще раз спасибо @ialocin

JohnLion JohnLion
22 мар. 2014 г. 19:27:05

Как сказал @RobertWilkins: »Этот код сработал идеально для меня и избавил от нескольких часов головной боли... Огромное спасибо!!!«

Nicolai Grossherr Nicolai Grossherr
11 июн. 2014 г. 23:08:51

@RobertWilkins Спасибо за это, но это не совсем подходит для редактирования, поэтому я добавил это для вас в виде комментария.

Nicolai Grossherr Nicolai Grossherr
11 июн. 2014 г. 23:17:29