如何将WooCommerce结账页通知移动到购物车前或页面标题下方
WooCommerce结账页通知位置调整方案
原有代码失效原因
- 移除动作的执行时机错误:你将
remove_action逻辑绑定到了woocommerce_before_cart钩子上,该钩子触发时,默认绑定在woocommerce_before_checkout_form上的通知输出动作已经执行完成,移除操作不生效。 - 钩子作用范围不匹配:你通过短代码插入到结账页的购物车模块,其内部钩子无法覆盖结账页全局的通知输出逻辑,无法实现位置调整。
Astra主题适配代码
Astra主题原生提供astra_content_before钩子,触发时机刚好是页面标题渲染完成后、主内容加载前,完全匹配你需要的位置要求,使用以下代码即可实现需求:
add_action( 'init', 'move_checkout_notices_after_title_astra' ); function move_checkout_notices_after_title_astra() { // 仅在非订单收到页的结账场景生效 if ( ! is_checkout() || is_wc_endpoint_url( 'order-received' ) ) { return; } // 移除默认的结账页通知挂载点 remove_action( 'woocommerce_before_checkout_form', 'wc_print_notices', 10 ); // 将通知挂载到页面标题后的Astra专属钩子 add_action( 'astra_content_before', 'wc_print_notices', 10 ); }
将上述代码添加到主题functions.php文件或自定义代码片段插件中,清空站点缓存、浏览器缓存后即可生效。如果需要调整通知和标题/内容的间距,可以修改add_action的第三个优先级参数,数值越小输出位置越靠前。
内容的提问来源于stack exchange,提问作者J.K.
相关产品推荐
相关产品推荐

