как отобразить отдельный продукт do_action на странице магазина в Woocommerce - PullRequest
0 голосов
/ 08 апреля 2019

Доступен ли какой-либо метод для отображения одного товара woocommerce_before_single_product_summary action woocommerce shop page

1 Ответ

0 голосов
/ 08 апреля 2019

Да. Есть несколько способов сделать это, в зависимости от того, чего вы на самом деле пытаетесь достичь:

  1. Вы можете переопределить шаблон страницы магазина WooCommerce (archive-product.php) в своей теме (или, возможно, дочерней теме), чтобы выполнить woocommerce_before_single_product_summary действие

  2. Вы можете добавить искомую функциональность, которая в настоящее время подключена к действию woocommerce_before_single_product_summary , к действию, которое запускается на странице магазина

  3. Вы можете создать функцию, которая будет выполнять действие woocommerce_before_single_product_summary , и подключить ее к действию на странице магазина (аналогично варианту 1, но не переопределяет шаблон магазина - в теория, предотвращающая дальнейшую работу в будущем, если / когда WooCommerce обновит свои шаблоны)

Как это сделать

  1. Создайте папку в вашей теме / дочерней теме с именем woocommerce, скопируйте в нее plugins/woocommerce/templates/content-product.php и выясните, куда вы хотите поместить действие woocommerce_before_single_product_summary . Убедившись в том, что вы находитесь внутри тегов <?php ?>, нажмите здесь, где вы хотите: do_action( 'woocommerce_before_single_product_summary' );
  2. Найдите конкретную функцию, которая делает то, что вы ищете, и добавьте ее к действию, которое уже срабатывает на странице магазина. В файле 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 действию, которое вы хотите скопировать.

  1. Опять же, в тегах <?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');

}

Плюсы / Минусы

  1. Самый простой и быстрый способ сделать то, что задает вопрос; однако : обратите внимание, что по умолчанию woocommerce_before_single_product_summary делает только две вещи: отображает изображение товара и сообщает, продается ли товар. Оба из них уже показаны на странице магазина. Поскольку этот метод просто выполняет действие woocommerce_before_single_product_summary , вы, скорее всего, будете иметь дублированный контент на странице магазина. Наверное, не самый лучший способ сделать это.
  2. Дает вам наибольшую детализацию. Я предполагаю, что вы, вероятно, хотите получить какую-то конкретную функциональность, которая в настоящее время подключена к действию woocommerce_before_single_product_summary , и сделать это на странице магазина. Если это так, то этот метод позволит вам сделать это, не беспокоясь о каких-либо других функциях, прикрепленных к действию woocommerce_before_single_product_summary (например, о дублированном изображении продукта, как упомянуто в методе 1). Однако вам необходимо выяснить, откуда поступает эта конкретная функциональность, что потребует некоторого изучения.
  3. Не требует копания, требуемого в методе 2, но, как и в методе 1, будет делать все, что подключено к действию woocommerce_before_single_product_summary . Большим преимуществом использования этого метода по сравнению с методом 1 является то, что когда / если WooCommerce обновит свои шаблоны в будущем (как они делают время от времени), вам не нужно будет беспокоиться о том, чтобы ваш шаблон обновлялся по сравнению с их. Это не всегда большое дело, но об этом нужно помнить.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...