Да. Есть несколько способов сделать это, в зависимости от того, чего вы на самом деле пытаетесь достичь:
Вы можете переопределить шаблон страницы магазина WooCommerce (archive-product.php) в своей теме (или, возможно, дочерней теме), чтобы выполнить woocommerce_before_single_product_summary действие
Вы можете добавить искомую функциональность, которая в настоящее время подключена к действию woocommerce_before_single_product_summary , к действию, которое запускается на странице магазина
Вы можете создать функцию, которая будет выполнять действие woocommerce_before_single_product_summary , и подключить ее к действию на странице магазина (аналогично варианту 1, но не переопределяет шаблон магазина - в теория, предотвращающая дальнейшую работу в будущем, если / когда WooCommerce обновит свои шаблоны)
Как это сделать
- Создайте папку в вашей теме / дочерней теме с именем
woocommerce
, скопируйте в нее plugins/woocommerce/templates/content-product.php
и выясните, куда вы хотите поместить действие woocommerce_before_single_product_summary . Убедившись в том, что вы находитесь внутри тегов <?php ?>
, нажмите здесь, где вы хотите: do_action( 'woocommerce_before_single_product_summary' );
- Найдите конкретную функцию, которая делает то, что вы ищете, и добавьте ее к действию, которое уже срабатывает на странице магазина. В файле functions.php вашей темы / дочерней темы (пожалуйста, используйте дочернюю тему ), добавьте это в теги
<?php ?>
:
add_action( 'woocommerce_before_shop_loop_item', 'specific_function_you_want' );
, где 'woocommerce_before_shop_loop_item'
- это первое действие, которое запускается на странице магазина (вы можете поменять его на другое действие в content-product.php
в зависимости от того, куда вы хотите поместить функциональность, а 'specific_function_you_want'
- это имя функции в данный момент. подключен к woocommerce_before_single_product_summary действию, которое вы хотите скопировать.
- Опять же, в тегах
<?php ?>
в вашем файле functions.php добавьте следующее:
add_action( 'woocommerce_before_shop_loop_item', 'do_before_product_summary');
function do_before_product_summary() {
do_action('woocommerce_before_single_product_summary');
}
Плюсы / Минусы
- Самый простой и быстрый способ сделать то, что задает вопрос; однако : обратите внимание, что по умолчанию woocommerce_before_single_product_summary делает только две вещи: отображает изображение товара и сообщает, продается ли товар. Оба из них уже показаны на странице магазина. Поскольку этот метод просто выполняет действие woocommerce_before_single_product_summary , вы, скорее всего, будете иметь дублированный контент на странице магазина. Наверное, не самый лучший способ сделать это.
- Дает вам наибольшую детализацию. Я предполагаю, что вы, вероятно, хотите получить какую-то конкретную функциональность, которая в настоящее время подключена к действию woocommerce_before_single_product_summary , и сделать это на странице магазина. Если это так, то этот метод позволит вам сделать это, не беспокоясь о каких-либо других функциях, прикрепленных к действию woocommerce_before_single_product_summary (например, о дублированном изображении продукта, как упомянуто в методе 1). Однако вам необходимо выяснить, откуда поступает эта конкретная функциональность, что потребует некоторого изучения.
- Не требует копания, требуемого в методе 2, но, как и в методе 1, будет делать все, что подключено к действию woocommerce_before_single_product_summary . Большим преимуществом использования этого метода по сравнению с методом 1 является то, что когда / если WooCommerce обновит свои шаблоны в будущем (как они делают время от времени), вам не нужно будет беспокоиться о том, чтобы ваш шаблон обновлялся по сравнению с их. Это не всегда большое дело, но об этом нужно помнить.