如果可以免费送货,如何加载特定的 CSS?

Posted

技术标签:

【中文标题】如果可以免费送货,如何加载特定的 CSS?【英文标题】:How to load specific CSS if free shipping is available? 【发布时间】:2022-01-13 03:30:46 【问题描述】:

有没有办法根据免费送货有条件地将以下 CSS 类应用于小计?

.free-shipping-text 
content: "Hurray Free Shipping";


.nonfree-shipping-text 
content: "Get Free Shipping over ₹ 1000"

如果小计价格低于 1000 卢比,那么 nonfree-shipping-text CSS 应该调用,当大于 1000 卢比时,free-shipping-text CSS 应该调用。

global $woocommerce;
$shipping_methods = $woocommerce->shipping->load_shipping_methods();
if($shipping_methods['free_shipping']->enabled == "yes")

.free-shipping-text CSS should call
        
else
.nonfree-shipping-text CSS should call

【问题讨论】:

【参考方案1】:

您可以在 html 中传递类。然后创建 2 个样式表 CSS 文件,您可以有条件地排队。

add_action( 'wp_enqueue_scripts', function()
    global $woocommerce;
    $shipping_methods = $woocommerce->shipping->load_shipping_methods();
    if($shipping_methods['free_shipping']->enabled == "yes")
    
        wp_enqueue_style( 'stylefreeshipping', get_stylesheet_directory_uri() . '/css/free-shipping.css' );
            
    else
        wp_enqueue_style( 'styleNOfreeshipping', get_stylesheet_directory_uri() . '/css/no-free-shipping.css' );
    
 );

但是,每次他们添加产品并超过 1000 个单位时,都应该重新加载页面。这是它与 php 一起工作的唯一方法。如果您在该过程中使用 AJAX,那么您最好使用 javascript。这将为用户提供更加动态的体验。

更多关于enqueue风格。

编辑 javascript 的答案:

function myFunction() 
  var element = document.getElementById("myDIV");
  element.classList.add("mystyle");   //add
  element.classList.remove("mystyle");  //remove
 

To add a class.

To remove a class.

但是,这意味着您需要获取货币价值并向其添加事件侦听器。然后在每次事件更改时检查值是否大于 1000,以便添加所需的类并删除另一个类,反之亦然,当您从 1000 下降时。

【讨论】:

我正在使用自定义消息到迷你购物车标题。这项工作是否作为 ajax 意味着在小计金额等于或大于免费送货价值(即 ₹1000)之后,它应该使用 .free-shipping-text @billybadass 更改消息 @rowoc 编辑了答案以包含 javascript 方式。

以上是关于如果可以免费送货,如何加载特定的 CSS?的主要内容,如果未能解决你的问题,请参考以下文章

如果用户具有特定角色,如何附加 CSS 类?

如何在 Meteor 中使用多个 CSS 文件

如何在cordova中动态加载CSS

如何使用 Javascript 加载 CSS 文件?

如何为特定应用添加特定 CSS

如何将特定日期格式加载到 BigQuery