Avada主题WooCommerce分类页如何移除指定即将上线产品的加购及详情按钮
问题根因
- 原有代码挂载的
after_setup_theme钩子触发时机过早,此时分类页的商品循环还未启动,get_the_ID()无法获取到循环内的当前商品ID,所以读取自定义元数据返回null - 后台存储的元数据值为大写
Yes,但判断条件用了小写yes,大小写不匹配也会导致逻辑不触发
修复后可直接使用的代码
// 替换原有代码,挂载到商品循环项启动的钩子上 add_action( 'woocommerce_before_shop_loop_item', 'adjust_coming_soon_product_buttons', 5 ); function adjust_coming_soon_product_buttons() { global $avada_woocommerce; $product_id = get_the_ID(); $coming_soon = get_post_meta( $product_id, 'comingsoon-checkbox', true ); // 同时兼容大小写配置,避免匹配失败 if ( 'Yes' === $coming_soon || 'yes' === $coming_soon ) { // 移除Avada默认的加购、详情按钮 remove_action( 'woocommerce_after_shop_loop_item', array( $avada_woocommerce, 'template_loop_add_to_cart' ), 10 ); remove_action( 'woocommerce_after_shop_loop_item', array( $avada_woocommerce, 'show_details_button' ), 15 ); // 新增即将上线提示文本 add_action( 'woocommerce_after_shop_loop_item', 'coming_soon_text', 30 ); } } // 未定义coming_soon_text时可补充这段,自定义提示样式 function coming_soon_text() { echo '<p style="color:#dc2626; font-weight:500; margin-top:10px;">即将上线</p>'; }
兼容调整说明
如果替换代码后未生效,可做以下检查:
- 确认你的Avada版本中两个按钮的挂载优先级,部分新版本Avada会将
show_details_button的优先级调整为20,对应修改remove_action中的第三个参数即可 - 测试前清空所有缓存:包括Avada主题缓存、站点缓存、WooCommerce片段缓存,避免旧缓存干扰效果
内容的提问来源于stack exchange,提问作者Patrick Nelson
相关产品推荐
相关产品推荐

