2015-05-01 3 views
1

Извините заранее за мой приблизительный английский. Я хотел бы изменить стиль страницы продукта на woocommerce для определенной категории продукта (не показывать изображения и некоторые другие важные изменения макета). Уже сделано, и это работает, проблема в том, что я хотел бы отображать эти продукты на одной странице. Я попытался использовать встроенный короткий код woocommerce [product_page id = $ id], проблема заключается в том, что пользовательский стиль и макет, которые я создал на content-single-product.php (в папке woocommerce), не применяются с использованием этого короткого кода. Я попытался скопировать мой скрипт в class-ws-shortcodes.php (папка woocommerce), но он не сработал. Что делать, чтобы отображать продукты на определенной странице, с реальным стилем этой страницы продуктов (пользовательский, который я создал), а не с кодовым кодом woocommerce?Woocommerce изменить стиль продукта и отобразить его на странице

Заранее спасибо за ваши ответы

+0

См. Https://stackoverflow.com/help/how-to-ask. – skyline75489

+0

проверить URL: https://wordpress.org/support/topic/product-page-11 Это может помочь вам –

+0

Спасибо за ваш ответ, я попробовал ваше решение, заменив term_id по идентификатору категории продукта и «single-product-seperateCategory», по «single-product-custom» (имя моей категории и файла php, скопированного в папку темы), но это не сработало для меня – Ben

ответ

2

Есть два способа достичь этого, это просто зависит от того, хотите ли вы изменить single-product.php или content-single-product.php. Оба приведут вас к одному и тому же результату.

Для первого, вы можете использовать по умолчанию функциональность WordPress и фильтрует шаблон при заданных условиях с помощью template_include

add_filter('template_include', 'so_29984159_custom_category_template'); 
function so_29984159_custom_category_template($template){ 
    if (is_single() && get_post_type() == 'product' && has_term('custom_category', 'product_cat')) { 
     $template = locate_template('single-product-custom.php'); 
    } 
    return $template; 
} 

Или, если вы хотели бы создать пользовательский content-product.php часть шаблона, вы можете использовать wc_get_template_part WooCommerce, который работает почти так же. Технически я думаю, что вы можете использовать ту же условную логику, но я изменил ее здесь, чтобы указать переменные WooCommerce, доступные на фильтре.

add_filter('wc_get_template_part', 'so_29984159_custom_content_template_part', 10, 3); 
function so_29984159_custom_content_template_part($template, $slug, $name){ 
    if ($slug == 'content' && $name == 'product' && has_term('custom_category', 'product_cat')) { 
     $template = locate_template('content-product-custom.php'); 
    } 
    return $template; 
} 

В любом случае single-product-custom.php или content-product-custom.php будет находиться в корневой папке вашей темы. Чтобы поместить их в другое место, просто измените путь в аргументе locate_template().

+0

Я проверю это благодаря этому подробному ответу, надеюсь, что он сработает – Ben

+0

Я ничего не тестировал, поэтому будьте осторожны с бродягой; или), но я думаю, что идея должна работать. – helgatheviking

+0

Мой пользовательский шаблон не был хорошо сделан (напрямую отредактирован content-single-product.php), поэтому я создал файл content-single-product-custom.php. И я заменил wc_get_template_part ('content', 'single-product'); в single-product.php для загрузки шаблона для категории с именем custom. Лучшая организация, но одинаковые результаты: example.com/product/myproduct (страница продукта) отображает продукт с помощью настраиваемого шаблона, но в коротком коде woocommerce product_page нет. Ваш код: Не знаете, где я должен добавить этот фильтр (файлы загрузчика шаблона?), Не используемые для перехвата и фильтрации, я использую их только с нескольких дней. – Ben

0

Вы не можете сделать кодирование в файл WordPress в том page.php изменить WooCommerce страниц. Неправильно. Вы просто переопределяете страницы WooCommerce в свою папку темы, а затем изменяете любые страницы, которые хотите сделать. Все шаблоны/страницы находятся в папке woocommerce/templates.

Здесь вы найдете документацию.

http://docs.woothemes.com/document/template-structure/ 
+0

Да, я знаю, что допустил ошибку в моем вопросе, я написал свой собственный шаблон в содержании -single-product.php, а не в page.php – Ben

0

редактировать WooCommerce/шаблоны/содержание однозначных product.php для просмотра одного продукта

+0

Это то, что я сделал, и это работает, продукты определенной категории, которые я выбрал, имеют другой шаблон. Проблема в том, что я хочу отображать эти продукты на странице wordpress. Но когда я использую shortcode productc_page для woocommerce, чтобы сделать это, на удивление (хорошо это меня удивило), он не будет сравнивать продукты с моим настраиваемым шаблоном. Другими словами: http://www.example.com/product/myproduct/ отображает продукт с помощью моего настраиваемого шаблона (находится в content-single-product.php), но когда я пытаюсь отобразить продукт на другой странице Wordpress с помощью woocommerce shortcode, он не работает. – Ben

+0

Я понимаю вашу проблему. сделайте одно в содержании-single-product.php, добавьте условие для шаблонов.например, если вы хотите отобразить элемент differnet для продукта под шаблоном XYZ, тогда добавьте. "if (is_page_template ('XYZ.php'))". вы можете написать для него конкретный код для этого шаблона. –