我有一个客户想要将 WooCommerce 中单个产品页面上的默认选项卡中的信息拉到页面上的不同位置,并完全删除这些选项卡。
共有三个默认产品标签:
- 产品描述,
- 附加信息
- 和评论。
删除选项卡并设置要显示的描述很容易在
中设置
/wp-content/plugins/woocommerce/includes/wc-template-hooks.php
:
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
function woocommerce_template_product_description() {
woocommerce_get_template( 'single-product/tabs/description.php' );
}
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_template_product_description', 10 );
这很好用。
我尝试通过构建新函数来重复该过程,这些函数可以访问附加信息 和评论 的模板文件,如下所示:
function woocommerce_template_product_addinfo() {
woocommerce_get_template( 'single-product/tabs/additional-information.php' );
}
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_template_product_addinfo', 20 );
function woocommerce_template_product_reviews() {
woocommerce_get_template( 'single-product/review-rating.php' );
}
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_template_product_reviews', 30 );
但两者都没有显示。我在这里做错了什么?
最佳答案
首先 woocommerce_get_template()
被弃用,取而代之的是 wc_get_template()
。经过一些搜索和测试(主要是为了显示评论),我找到了方法:
add_action( 'woocommerce_after_single_product_summary', 'removing_product_tabs', 2 );
function removing_product_tabs(){
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
add_action( 'woocommerce_after_single_product_summary', 'get_product_tab_templates_displayed', 10 );
}
function get_product_tab_templates_displayed() {
wc_get_template( 'single-product/tabs/description.php' );
wc_get_template( 'single-product/tabs/additional-information.php' );
comments_template();
}
代码进入您的事件子主题(或主题)的 function.php 文件。经过测试并且可以工作 (WC 3+)。
关于php - 删除单个产品选项卡并在 Woocommerce 中添加相关内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49196441/