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

问题描述 投票:0回答:1

是否有任何方法可用于显示单个产品woocommerce_before_single_product_summary action woocommerce shop page

wordpress woocommerce wordpress-theming
1个回答
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'是在Shop页面上触发的第一个动作(你可以根据你想要放置功能的地方换掉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操作,因此您很可能在Shop页面上有重复的内容。可能不是解决这个问题的最好方法。
  2. 为您提供最细粒度的服务。我假设您可能希望获得一些当前与woocommerce_before_single_product_summary操作挂钩的特定功能,并在Shop页面上执行此操作。如果是这种情况,此方法将允许您这样做,而不必担心附加到woocommerce_before_single_product_summary操作的任何其他功能(如方法1中提到的重复产品图像)。但是,您需要找出特定功能的来源,这需要进行一些挖掘。
  3. 不需要方法2中所需的挖掘,但与方法1一样,将执行与woocommerce_before_single_product_summary操作挂钩的所有操作。使用此方法1的最大好处是,当WooCommerce未来(如他们不时更新)模板时,您无需担心让模板覆盖最新版本。这并不总是一件大事,但要记住这一点。
© www.soinside.com 2019 - 2024. All rights reserved.