我们希望通过添加到一些现有的 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 元素
您可以使用
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 文件中(或插件中)。应该可以。