首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >WooCommerce -修改后的购物车重量不影响运输成本

WooCommerce -修改后的购物车重量不影响运输成本
EN

Stack Overflow用户
提问于 2020-06-09 11:20:30
回答 2查看 399关注 0票数 4

晚上好。我写了一些代码来改变购物车中一些特定文章的总重量(由于快递员的特定要求)。在你问之前..。不,我不能修改单件重量,因为我必须计算包装的特殊重量。是的,说来话长,

我的代码看起来像这样(简化版本):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function set_my_weight($weight) {
  global $woocommerce;
  $cart_items = $woocommerce->cart->get_cart(); 
  $addedWeight = 0;

  echo "prev: ". $weight;
  foreach($cart_items as $prod => $values):
     if(conditions):
       $addedWeight += 1.5;
     endif;
  endforeach;

  $weight += $addedWeight;
  echo "final: ". $weight;

  return $weight;
}
add_filter('woocommerce_cart_contents_weight', 'set_my_weight',10,1);

当我回显调用echo WC()->cart->cart_contents_weight;的值时,似乎一切正常,但由于某些原因,运输成本并没有改变。我正在使用"WooCommerce基于重量的运输“插件来管理我的运输成本。

为什么插件会忽略新的权重?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-06-09 13:35:19

由于WooCommerce基于重量的运输是一个第三方插件,因此有不同的方法来计算基于购物车重量的成本变化。

下面是两种改变购物车重量的方法。

1)更改购物车内容总重量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
add_filter( 'woocommerce_cart_contents_weight', 'filter_wc_cart_contents_weight', 10000 );
function filter_wc_cart_contents_weight( $weight ) {
    $condition    = true; // Only for testing
    $extra_weight = 1.5;

    // Loop through cart items
    foreach(WC()->cart->get_cart() as $cart_item ) {
        $quantity = $cart_item['quantity']; // If needed

        if( $condition ) {
            $weight += $extra_weight;
        }
    }
    return $weight;
}

// For testing: display the total weight after order total in cart page (Ajax updated)
add_action( 'woocommerce_cart_totals_after_order_total', 'display_wc_cart_total_weight_after_order_total' );
function display_wc_cart_total_weight_after_order_total() {
    ?>
    <tr class="order-total">
        <th><?php esc_html_e( 'Total weight', 'woocommerce' ); ?></th>
        <td data-title="<?php esc_attr_e( 'Total weight', 'woocommerce' ); ?>"><?php echo wc_format_weight( WC()->cart->get_cart_contents_weight() ); ?></td>
    </tr>
    <?php
}

代码放在活动子主题(或活动主题)的functions.php文件中。经过测试,效果良好。

2)更改购物车项目权重:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
add_action( 'woocommerce_before_calculate_totals', 'conditionally_change_tax_class', 10000 );
function conditionally_change_tax_class( $cart ){
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // Required since Woocommerce version 3.2 for cart items properties changes
    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    $condition    = true; // Only for testing
    $extra_weight = 1.5;

    // Looo through our specific cart item keys
    foreach ( $cart->get_cart() as $cart_item ) {
        // get product weight
        $weight = (float) $cart_item['data']->get_weight();

        // Set the new product weight
        $cart_item['data']->set_weight( $weight + ( $extra_weight / $cart_item['quantity'] ) );
    }
}

// For testing display the total weight after order total
add_action( 'woocommerce_cart_totals_after_order_total', 'display_wc_cart_total_weight_after_order_total' );
function display_wc_cart_total_weight_after_order_total() {
    ?>
    <tr class="order-total">
        <th><?php esc_html_e( 'Total weight', 'woocommerce' ); ?></th>
        <td data-title="<?php esc_attr_e( 'Total weight', 'woocommerce' ); ?>"><?php echo wc_format_weight( WC()->cart->get_cart_contents_weight() ); ?></td>
    </tr>
    <?php
}

代码放在活动子主题(或活动主题)的functions.php文件中。经过测试,效果良好。

现在,如果基于WooCommerce重量的装运插件从每个产品获得重量,您将无法更改购物车重量,因此运输成本。

票数 2
EN

Stack Overflow用户

发布于 2020-12-04 21:48:45

如果您正在使用此WooCommerce Weight Based Shipping插件,

如果你在使用钩子woocommerce_checkout_update_order_reviewWC()->cart->calculate_shipping()之前更改购物车数据,@LoicTheAztec的答案可能会起作用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
add_action( 'woocommerce_checkout_update_order_review', 'conditionally_change_tax_class', 10000 );

来源:woocommerce/includes/class-wc-ajax.php

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62281414

复制
相关文章
ASP.Net巧用窗体母版页
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/38865931
DannyHoo
2018/09/13
1.8K0
ASP.Net巧用窗体母版页
母版页
1. 在整个站点中应用母版页 <configuration> <system.web> <pages masterPageFile="~/Site.master" /> </system.web> </configuration> 2.动态应用母版页 void Page_PreInit (Object sender, EventArgs e) { Page.MasterPageFile = "~/Site.master"; } 3.操作模板页中的控件(两种方式:强类型与弱类型) 强
hbbliyong
2018/03/05
9870
一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十)
前言 朋友们, 大家好,我还是Rector,写ASP.NET MVC 5系列文章 [一步一步创建ASP.NET MVC5程序Repository+Autofac+Automapper+SqlSugar] 的那个家伙。 今天为大家带来本系列的第十篇文章。 本文知识要点 本文将要给大家分享的是页面统筹和规划方面的知识。 在上一篇文章发布后有朋友在评论中也反馈到了这个问题,即我们可以把每个页面中重复用到的布局代码放到统一的模板页面或者部分视图里面,以便代码的重用及维护。所以本文为大家分享的内容是: 母版页 部分
Rector
2018/03/29
1.9K0
一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十)
母版页的使用(shtml)
使用母版页 1.网页很多地方长得一样,也有不一样的地方,Webform的母版页(MasterPage),使用母版页的窗体。 2.母版页太笨重。(加载母版页,然后进行多次填坑,麻烦!) 3.母版页使用ContentPlaceHolder挖坑,“使用母版页的窗体”用Content填坑 案例—1 新建一个母版页peo.Master <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="peo.master.cs" Inheri
静心物语313
2020/03/24
1.5K0
母版页的使用(shtml)
(转)母版页和相对路径
一个经常让开发人员疑惑的问题是母版页是如何处理相对路径的。如果你使用的是静态文字,这一问题不会困扰你。不过,如果你加入了<img>标签或者指向其他资源的HTML标签,问题就可能发生。
SAP梦心
2022/05/10
1.8K0
(转)母版页和相对路径
ASP.NET 2.0 中的异步页[来自MSDN]
ASP.NET 2.0 提供了大量新功能,其中包括声明性数据绑定和母版页,成员和角色管理服务等。但我认为最棒的功能是异步页,接下来让我告诉您其中的原因。 当 ASP.NET 接收针对页的请求时,它从线程池中提取一个线程并将请求分配给该线程。一个普通的(或同步的)页在该请求期间保留线程,从而防止该线程用于处理其他请求。如果一个同步请求成为 I/O 绑定(例如,如果它调用一个远程 Web 服务或查询一个远程数据库,并等待调用返回),那么分配给该请求的线程在调用返回之前处于挂起状态。这影响了可伸缩性,原因是线程池
菩提树下的杨过
2018/01/23
1.9K0
ASP.NET 2.0 中的异步页[来自MSDN]
VS2008(C#)子页嵌套母版页的控件访问方法(一)
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage_MasterPage" %>
阳光岛主
2019/02/19
1.3K0
VS2008(C#)子页嵌套母版页的控件访问方法(三)
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage_MasterPage" %>
阳光岛主
2019/02/19
1.1K0
Thymeleaf使用技巧:使用片段(fragment)实现母版页(Layout)功能
网站中往往有通用的布局,比如导航、底部等等,这些页面中共用的部分,就需要放在母版页(Layout)里面。 这样每个页面只用关注本页面要完成的功能/内容即可。提高了开发效率,也降低了公共部分的维护成本。
KenTalk
2018/09/11
10.4K1
VS2008(C#)子页嵌套母版页的控件访问方法(二)
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage_MasterPage" %>
阳光岛主
2019/02/19
1.3K0
ASP.NET Core 入门教程 6、ASP.NET Core MVC 视图布局入门
本篇代码以下代码进行调整:https://github.com/ken-io/asp.net-core-tutorial/tree/master/chapter-02
KenTalk
2018/11/12
2.9K0
ASP.NET Core 入门教程 6、ASP.NET Core MVC 视图布局入门
关于ContentPlaceHolder与Content控件
ContentPlaceHolder 控件:在 ASP.NET 母版页中定义内容区域。
全栈程序员站长
2022/09/14
7080
ASP.NET MVC 重点教程一周年版 第十一回 母版页、用户自定义控件及文件上传
1.母版页是与Controller无关的,母版页只是一个View文件,而没有任何Controller与之相对应。
重典
2022/04/11
1.2K0
ASP.NET MVC 重点教程一周年版 第十一回 母版页、用户自定义控件及文件上传
ASP.NET MVC 5 - 视图
在本节中,你要去修改HelloWorldController类,使用视图模板文件,在干净利索地封装的过程中:客户端浏览器生成HTML。 您将创建一个视图模板文件,其中使用了ASP.NET MVC 3所引入的Razor视图引擎(Razor view engine)。Razor视图模板文件使用.cshtml文件扩展名,并提供了一个优雅的方式来使用C#语言创建所要输出的HTML。用Razor编写一个视图模板文件时,将所需的字符和键盘敲击数量降到了最低,并实现了快速,流畅的编码工作流程。 当前在控制器类中的Inde
葡萄城控件
2018/01/10
3.2K0
ASP.NET MVC 5 - 视图
ASP.NET控件的CSS定位
        ASP.NET标准控件功能强大,虽然在编程方面方便点,后台代码可以任意访问到并操作,但CSS对母版内容页里的标准控件则很难。原因是经过编译之后的页面标准控件的ID都会变为母版页占位符和原ID的合成字符串,已经不是原来的ID值了,此时如果你的CSS是用ID来定位则失效(在没有母版页的普通aspx页面里标准空间的id值经过编译之后不会变化)。这就是为什么VS中查看到的代码和浏览器中看到的不一样的原因了。因此用CSS来定位最好是使用Class或者CssClass来做。
SAP梦心
2022/05/10
2K0
dropdownlist的AutoPostBack属性「建议收藏」
我最近在做一个教学楼管理系统,老师说最好做成动态网页的形式,反正我也希望自己学习一下有关.net的东西,于是就选择了asp.net,在这之前我学习过mfc,asp 所以入门不算太难,甚至在刚刚接触C#的时候还很兴奋,觉得用vc++要写大段代码解决的问题,而用C#几乎一段代码都不用写。所以学习了一周时间我就开始准备动手做教学楼管理系统,在做的过程中遇到了很多的问题,今天上午我准备用母版页的技术来实现各个页面的统一布局,在模板页上放置各种控件,单击查询按钮在内容页显示查询的结果,当时我为了尽量减少因为用户使用时输入不正确的字符造成的操作性错误,我就选用大量的dropdownlist 控件代替textbox控件,准备随着dropdownlist控件选项的改变动态生成其他不同的控件,但是当我准备编写代码实现该功能的时候发现dropdownlist 控件的触发响应事件方法中的代码根本就没有响应,按照VC++的经验我觉得是是因为这个控件是放在母版上的原因,所以就一头钻进了书海查找关于母版方面的知识一直到中午这个问题都没有解决,到了晚上我尝试性的将dropdownlist换成了button控件,结果button的按钮点击事件能够响应,所以断定不是因为我先前认为的母版的原因,肯定是dropdownlist控件哪里没有用对,所以就在百度里面搜素了一下关于的dropdownlist事件响应方面的问题,呵呵原来我没有把dropdownlist的AutoPostBack属性设置为ture,就这样一个常识性的问题,花了我我一天的时间,但是还是挺值得的在我解决问题的过程了看了一些关于母版、皮肤、主题方面的资料加深了自己对他们的认识,在以后的使用到这些技术的时候,一点会少花一点时间。总之生活很简单,遇到困难的时候拒绝堕落,拒绝灰心丧气就行。
全栈程序员站长
2022/11/03
7750
django html母版
08.12自我总结 django母版 一.母版写的格式 在需要导入的地方写 {% block 名字定义 %} {% endblock %} 二.导入模板 {% extends 'FUCK.html' %} #模板的文件名称 {% block 名字定义 %} 模板内添加的内容 {% endblock %}
小小咸鱼YwY
2019/09/11
5720
关于Firefox中链接点击弹出空白标签页的问题分析
昨天突然有好心人提醒我说我的网站某些链接在firefox中打开时会弹出 about:blank 的空白页面。本来自己在测试的时候没怎么考虑浏览器的兼容问题,毕竟自己总共也没写几个标签。不过研究了一下发现前端这一行做起来还真挺麻烦的。
mythsman
2022/11/14
1.6K0
ASP.NET中cs代码页找不到aspx页面中的控件ID
最近在写一个BBS,依照书的葫芦画我的瓢,但是就算这样其中仍然出了不少问题。刚解决如上所述问题。
望天
2018/08/02
4.3K0
lxparse:解析列表页链接和详情页内容
Github地址:https://github.com/lixi5338619/lxparse
李玺
2022/09/23
1.2K0
lxparse:解析列表页链接和详情页内容

相似问题

安装停靠卷销毁文件?

10

用regex提取停靠文件卷

11

在文件中删除卷参后,停止停靠在容器中组装卷

11

安装ElasticSearch停靠-组合时未能装入本地卷错误

114

允许停靠的闪亮应用程序访问本地卷

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文