如何在Woocommerce中的商店页面中显示单个产品do_action

时间:2019-04-08 11:39:17

标签: wordpress woocommerce wordpress-theming

是否有任何方法可以显示单个产品 woocommerce_before_single_product_summary 操作woocommerce商店页面

1 个答案:

答案 0 :(得分:0)

是的。有几种方法可以执行此操作,具体取决于您实际要实现的目标:

  1. 您可以在主题(或希望是子主题)中覆盖WooCommerce商店页面模板(archive-product.php),以执行 woocommerce_before_single_product_summary 操作

  2. 您可以将正在寻找的功能添加到 woocommerce_before_single_product_summary 操作中,以添加到在“商店”页面上触发的操作

  3. 您可以创建一个函数,该函数将执行 woocommerce_before_single_product_summary 操作,并将其挂接到Shop页面上的操作中(类似于选项1,但不会覆盖Shop模板-从理论上讲,如果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文件中(请使用use a child theme),将其添加到<?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. 同样,在functions.php文件的<?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将来更新其模板时(就像它们不时更新一样),您将不必担心保持模板的最新更新。这并不总是一件大事,但要记住这一点。