求WooCommerce 7.2.2前端显示会员订阅价的自定义函数
WooCommerce 7.2.2 自定义订阅价格展示函数
以下是适配需求的自定义代码,可直接添加到主题的functions.php文件或自定义功能插件中:
/** * 在商品前端显示5折订阅价格提示(仅非会员可见) * 适配WooCommerce 7.2.2 + YITH Membership */ add_action( 'woocommerce_after_shop_loop_item_title', 'display_subscription_price_text', 15 ); add_action( 'woocommerce_single_product_summary', 'display_subscription_price_text', 15 ); function display_subscription_price_text() { // 仅前端显示,后台跳过 if ( is_admin() ) return; // 已登录且是会员的用户不显示 if ( is_user_logged_in() && function_exists('yith_wcmbs_is_user_member') && yith_wcmbs_is_user_member() ) return; global $product; if ( ! $product ) return; // 获取当前有效价格(优先取销售价,无销售价则取原价) $current_price = $product->is_on_sale() ? $product->get_sale_price() : $product->get_regular_price(); if ( empty( $current_price ) ) return; // 计算5折订阅价 $subscription_price = $current_price * 0.5; // 格式化价格(匹配站点货币设置) $formatted_sub_price = wc_price( $subscription_price ); // 输出订阅价格文本 echo '<p class="subscription-price-text" style="margin: 0.5em 0; color: #666; font-size: 0.9em;">' . $formatted_sub_price . ' with subscription x</p>'; } /** * 可选:添加自定义CSS样式优化显示(可放到主题自定义CSS中) */ add_action( 'wp_head', 'subscription_price_custom_css' ); function subscription_price_custom_css() { if ( is_admin() ) return; ?> <style> .subscription-price-text { font-style: italic; margin-top: 0.3em !important; } .woocommerce-loop-product__title + .price + .subscription-price-text { text-align: center; /* 列表页居中显示 */ } </style> <?php }
代码说明:
- 显示逻辑:仅对未登录用户或已登录但非YITH会员的用户展示订阅价提示
- 价格计算:自动识别商品当前显示价格(原价/促销价),按固定5折计算订阅价
- 适配场景:同时支持产品列表页和详情页的价格展示
- 样式兼容:自带基础样式,可根据需求修改CSS部分
注意事项:
- 确保YITH Membership插件已激活,
yith_wcmbs_is_user_member()函数可用(若需指定会员计划ID,可改为yith_wcmbs_is_user_member_of( $plan_id )) - 代码需放置在主题的
functions.php文件末尾,或使用自定义功能插件避免主题更新丢失 - 若站点使用非英文价格格式(如逗号作为小数分隔符),
wc_price()会自动适配站点货币设置
内容的提问来源于stack exchange,提问作者Vlad.G
相关产品推荐
相关产品推荐

