如何将自定义 html 类添加到 WooCommerce 循环添加到购物车链接?

问题描述 投票:0回答:1

我们希望通过添加到一些现有的 PHP 中来向某些特定按钮添加 CSS 类。

这是我们现有的 PHP - 它更改按钮文本。 [从 StackOverFlow 的其他地方收集]

/**
 * @snippet       Read more > Out of stock @ WooCommerce Shop
 * @how-to        businessbloomer.com/woocommerce-customization
 * @author        Rodolfo Melogli, Business Bloomer
 * @testedwith    WooCommerce 5
 * @community     https://businessbloomer.com/club/
 * See: https://www.businessbloomer.com/woocommerce-rename-read-more-out-of-stock-shop/
 */
 
add_filter( 'woocommerce_product_add_to_cart_text', 'bbloomer_archive_custom_cart_button_text' );
  
function bbloomer_archive_custom_cart_button_text( $text ) {
   global $product;       
   if ( $product && ! $product->is_purchasable() ) {         /* original example was:    ! $product->is_in_stock()  */
      return 'Active';
   } 
   return $text;
}

这是运行上面的 php 后的 html。

<p class="product woocommerce add_to_cart_inline " style="">
       <span class="woocommerce-Price-amount amount"><bdi>
       <span class="woocommerce-Price-currencySymbol">£</span>0.00</bdi></span> 
       <span class="subscription-details"> for 2 years</span><br>
       <a href=".../membership/arts-events-marketing-subscription-copy/" [split]
aria-describedby="woocommerce_loop_add_to_cart_link_describedby_2242" data-quantity="1" [split]
class="button product_type_subscription" data-product_id="2242" data-product_sku="" [split]
aria-label="Read more about “Arts Events Marketing Subscription”" [split]
rel="nofollow" data-success_message="" data-product_price="0.0" [split]
data-product_name="Arts Events Marketing Subscription" data-google_product_id="">Active</a> 
       <span id="woocommerce_loop_add_to_cart_link_describedby_2242" class="screen-reader-text"></span>
</p

我们如何将“ActiveSubscription”类添加到 A 元素

php html woocommerce product woocommerce-subscriptions
1个回答
0
投票

您可以使用

woocommerce_loop_add_to_cart_link
过滤器挂钩与 PHP
str_replace()
向 WooCommerce Loop 添加到购物车按钮链接添加额外的选择器类。

您似乎正在使用 WooCommerce 订阅,并且当产品是当前用户的活动订阅的一部分时,您想要添加该选择器类。在这种情况下,您可以在

wcs_user_has_subscription()
语句中使用
IF
函数。

尝试以下操作:

add_filter( 'woocommerce_loop_add_to_cart_link', 'filter_loop_add_to_cart_link', 10, 2 );
function filter_loop_add_to_cart_link( $link, $product ) {
    // Check if the product is part of an active subscription for the current user
    if ( wcs_user_has_subscription( get_current_user_id(), $product->get_id(), 'active' ) ) {
        $link = str_replace('class="button', 'class="button ActiveSubscription', $link);
    }
    return $link;
}

代码位于子主题的functions.php 文件中(或插件中)。应该可以。

相关:检测当前用户是否有有效订阅

© www.soinside.com 2019 - 2024. All rights reserved.