WooCommerce调整产品详情页顺序:相关产品移至评论前
WooCommerce产品详情页模块排序调整方案
问题背景
当前WooCommerce产品详情页模块顺序为:Faview虚拟评论 → 相关产品 → 配套产品 → 「你可能还喜欢」。需要调整为:产品主体 → 相关产品 → 评论的展示顺序,此前通过functions.php修改优先级的代码未生效,代码如下:
add_action( 'init', 'move_related_products_before_tabs' ); function move_related_products_before_tabs( ) { remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 ); add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 5 ); }
失效原因
使用init钩子过早,此时WooCommerce的woocommerce_output_related_products动作还未完成注册,导致remove_action无法定位到目标钩子,调整优先级的操作不生效。此外,还需同步调整Faview评论模块的钩子优先级,确保它在相关产品之后展示。
修正方案
改用wp钩子(WooCommerce动作注册完成后触发),同时调整相关产品和Faview评论的钩子位置:
add_action( 'wp', 'adjust_product_single_section_order' ); function adjust_product_single_section_order() { // 移除默认位置的相关产品(原优先级20) remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 ); // 将相关产品移至产品主体后,设置优先级5(确保在评论前) add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 5 ); // 调整Faview评论的位置(需替换为实际的评论输出函数名和原优先级) // 示例:假设Faview用faview_display_reviews函数,原优先级3 remove_action( 'woocommerce_after_single_product_summary', 'faview_display_reviews', 3 ); // 将评论移至相关产品后,设置优先级10 add_action( 'woocommerce_after_single_product_summary', 'faview_display_reviews', 10 ); }
注意事项
- 需确认Faview插件实际输出评论的函数名和原优先级:可以通过查看Faview插件代码,或使用钩子调试工具查看
woocommerce_after_single_product_summary下的所有钩子及优先级。 - 若不需要展示配套产品和「你可能还喜欢」模块,可添加对应
remove_action语句移除,例如:// 移除配套产品(示例函数名,以实际为准) remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_dashboard', 15 ); // 移除「你可能还喜欢」(示例函数名,以实际为准) remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_upsell_products', 15 );
内容的提问来源于stack exchange,提问作者Tasnim Mostafa
相关产品推荐
相关产品推荐

