С чего начать?
Для того, чтобы иметь возможность менять какие-либо стандартные шаблоны WC нужно скопировать папку «templates» из папки плагина в папку шаблона, который используется как основной, и переименовать её в «woocommerce». Выполнение этого шага необходимо для большинства шаблонных решений.
Решения, которые вы можете использовать на странице товара
Кнопка добавления в корзину
По скольку WC имеет несколько доступных разновидностей товаров, для каждого вида с учетом его специфики создана отдельная функция.
1. Простой товар (simple)
woocommerce_simple_add_to_cart();
2. Внешний товар (external)
woocommerce_external_add_to_cart();
3. Вариативный товар
woocommerce_variable_add_to_cart();
Добавление полей в карточку товара
Кажется, что это просто. Я тоже так думал, пока мне не пришлось на практике применять данную технику. Я столкнулся с проблемой — форма товара ( я использовал simple ) никак не хотела передавать данные. Увы, только через неделю я догадался посмотреть на код исходников карточки и открыл, что форма товара обернута вокруг кнопки «Добавить в корзину» и на этом мы ничего сделать не сможем.
Теперь к решению:
Переходим в папку woocommerce в корне нашей темы (как ее сделать см. выше) и открываем файл single-product.php. В нем после подключения хэдера вставляем следующий код формы:
<form id="cart_fenster" class="cart" method="post" enctype="multipart/form-data">
Поясню:
- id: обычный id формы, понадобится далее
- class: честно, я не уверен, что он нужен, но в оригинальной форме так, поэтому оставим его
- method: тип передачи данных — для формы WC это POST
- enctype: позволяет производить передачу файлов (с помощью input[type=«file»])
Далее переходим в woocommerce/single-product/add-to-cart/ и открываем файл, соответствующий вашему типу продукта (variable,simple,grouped). В нем для кнопки добавить в корзину прописываем следующее:
<button form="cart_fenster" type="submit" class="single_add_to_cart_button button alt">
где новым является атрибут form, который говорит нашей кнопке, что теперь она связана с формой с id «cart_fenster» (можете заменить на свой). Это позволяет использовать данные из этой формы, то есть со всей страницы товара.
Надеюсь, я помог вам. В ближайшее время постараюсь написать про свою сортировку товаров по мета полю, сохранение и обработку значений кастомных полей, которые мы добавили и много чего интересного.