WooCommerce - 在 content-single-product.php 模板中添加打开和关闭 div 标签

WooCommerce - Adding open and close div tags in content-single-product.php template

I want to add on templates/content-single-product.php:
An opening <div> before line 39
A close </div> after line 81.

将此模板复制到我的活动主题并进行自定义即可正常工作。

但是有没有更好的方法不用复制模板就可以做到这一点?

我想我已经看到了一些方法可以对 do_action( 'woocommerce_before_single_product_summary' );do_action( 'woocommerce_after_single_product_summary' ); 应用过滤器来做类似的事情。

我只是想检查一下我的做法,是正确的方法

我选择的方式对吗?

谢谢。

您可以通过为 woocommerce_before_single_product_summarywoocommerce_after_single_product_summary 添加两个挂钩来做到这一点,因此它们看起来像这样

add_action('woocommerce_before_single_product_summary','your_function_name',1); add_action('woocommerce_after_single_product_summary','another_function_name',99); function your_function_name(){echo ""; } function another_function_name(){echo ""; }

在模板 content-single-product.php 中,打开 <div> 的唯一方法是模板本身,正如您之前想要的那样(第 39 行) :

<div itemscope itemtype="<?php echo woocommerce_get_product_schema(); ?>" id="product-<?php the_ID(); ?>" <?php post_class(); ?>>

因为如果你使用 woocommerce_before_single_product_summary 你的开放 <div> 将是 之后存在 <div itemscope itemtype="…"> 而不是 before.

最后,在编辑模板时,最好的方法是将其添加到模板中(就像您制作的那样。

但它也应该在 woocommerce_after_single_product 挂钩中工作,具有任何优先级(因为还没有挂钩);这样例如:

function single_product_closing_div(){
    echo '</div>';
}
add_action( 'woocommerce_after_single_product', 'single_product_closing_div', 10, 0 );

Conclusion: You have done it the right way, in the template directly.