我想添加templates/content-single-product.php:
•第39行之前的开头<div>
•第81行后关闭</div>
。
将此模板复制到我的活动主题并使自定义工作正常。
但是,如果没有复制模板,有更好的方法吗?
我以为我已经看到了一些方法可以将过滤器应用到do_action( 'woocommerce_before_single_product_summary' );
和do_action( 'woocommerce_after_single_product_summary' );
来做类似的事情。
我只是想检查一下我的方式,是正确的方法。
我选择的方式是正确的吗?
感谢。
答案 0 :(得分:2)
在模板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="…">
,而不是之前。
关闭时,在编辑模板时,最好的方法是将其添加到模板中(就像您制作模板一样。
但是它应该在 woocommerce_after_single_product
钩子中以任何类型的优先级(因为没有任何东西已经挂钩);这种方式例如:
function single_product_closing_div(){
echo '</div>';
}
add_action( 'woocommerce_after_single_product', 'single_product_closing_div', 10, 0 );
结论:您已经在模板中以正确的方式完成了这项工作。
答案 1 :(得分:1)
你可以通过为woocommerce_before_single_product_summary
和woocommerce_after_single_product_summary
添加两个钩子来实现这一点,这样它们就会像这样
ADD_ACTION(&#39; woocommerce_before_single_product_summary&#39;&#39; your_function_name&#39;,1); ADD_ACTION(&#39; woocommerce_after_single_product_summary&#39;&#39; another_function_name&#39; 99); function your_function_name(){echo&#34;&#34 ;; } function another_function_name(){echo&#34;&#34 ;; }