Woocommerce,根据运输类别隐藏运输方法

2023-11-24

我试图根据运输类别隐藏除一种运输方法之外的所有运输方法,本质上是在选择属于特定类别的产品时强制使用 FedEx 隔夜方法。

我从这段代码,并将其修改如下:

add_filter( 'woocommerce_available_shipping_methods', 'hide_shipping_based_on_class' ,    10, 1 );

function check_cart_for_share() {

// load the contents of the cart into an array.
global $woocommerce;
$cart = $woocommerce->cart->cart_contents;

$found = false;

// loop through the array looking for the tag you set. Switch to true if the tag is     found.
foreach ($cart as $array_item) {
$term_list = wp_get_post_terms( $array_item['product_id'], 'product_shipping_class', array( "fields" => "names" ) );

if (in_array("Frozen",$term_list)) {

      $found = true;
      break;
    }
}

return $found;

}

function hide_shipping_based_on_class( $available_methods ) {

// use the function above to check the cart for the tag.
if ( check_cart_for_share() ) {

// remove the rate you want
unset( $available_methods['canada_post,purolator,fedex:FEDEX_GROUND,fedex:GOUND_HOME_DELIVERY'] ); 
}

// return the available methods without the one you unset.
return $available_methods;

}

但它似乎并没有隐藏任何运输方式。不知道我错过了什么......

这是一个多站点安装,我正在加拿大一侧进行测试http://stjeans.harbourcitydevelopment.com

我正在运行表费率运输模块以及 FedEx、Purolator 和加拿大邮政模块。


我遇到了同样的问题,修改你的代码有帮助。一个问题是“woocommerce_available_shipping_methods“ WooCommerce 2.1 中已弃用过滤器。因此您必须使用新过滤器:”woocommerce_package_rates“。 有WooCommerce 教程也用于类似的任务。

因此,我更改了过滤器挂钩,当条件为真时,我迭代所有运输方式/费率,找到我想要向客户显示的运输方式/费率,从中创建新数组并返回该数组(仅包含一项)。

我认为你的问题(除了已弃用的钩子之外)主要是在错误的 unset($available_methods[...]) 行中。它不能那样工作。

这是我的代码:

add_filter( 'woocommerce_package_rates', 'hide_shipping_based_on_class' ,    10, 2 );
function hide_shipping_based_on_class( $available_methods ) {
    if ( check_cart_for_share() ) {
        foreach($available_methods as $key=>$method) {
            if( strpos($key,'YOUR_METHOD_KEY') !== FALSE ) {
                $new_rates = array();
                $new_rates[$key] = $method;
                return $new_rates;
            }
        }
    }
    return $available_methods;
}

警告!我发现 woocommerce_package_rates 挂钩并不是每次都被解雇,但仅当您更改购物车中的商品或商品数量时。或者对我来说看起来就是这样。也许这些可用的价格以某种方式缓存在购物车内容中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Woocommerce,根据运输类别隐藏运输方法 的相关文章

  • 搜索引擎如何找到相关内容? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Google 在解析网络时如何找到相关内容 例如 Google 使用 PHP 原生 DOM 库来解析内
  • PHP 会话不适用于游戏

    我正在尝试模仿一款名为 SKUNK 用骰子玩 的游戏来完成一项作业 我无法让会话正常工作 这是我第一次使用 PHP 我还被告知无需会议即可完成 这是我的代码
  • PHP MySQL 使用选项/选择 HTML 表单标签进行多重搜索查询

    我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索 我不想拥有它 所以它有多个可选搜索字段 例如if isset POST city isset POST name 我不知道如何用 HTML 来做到这一点
  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array
  • 生成大随机数 php [重复]

    这个问题在这里已经有答案了 我想使用 PHP 生成一个包含 75 个字符的数字 我到处寻找 但一无所获 除了这个 http dailycoding com tools RandomNumber aspx http dailycoding c
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • Woocommerce 让产品显示在存档页面中

    我正在尝试让所有产品显示在我商店的存档页面中 我想知道他们的id我正在使用我的一个钩子 它在 wp head 上运行并检查 if is product category 我想以某种方式访问 产品的查询并获取它们的 ID if is prod
  • 如何使用 php 发送服务器错误响应?

    一旦用户点击删除按钮我的 jQuery 脚本要求服务器删除所选项目 现在我想要我的php发送成功或错误响应的脚本 是否有可能触发错误回调万一该项目无法删除 Thanks 我的 jQuery 代码 ajax type post url myA
  • 如何使用 php 下载/打印页面的特定部分

    我有一个 HTML 页面如下 Lorem Ipsum is simply dummy text of the printing and typesetting industry Lorem Ipsum has been the indust
  • 蛋糕控制台 2.2.1:烘焙错误

    运行 MAMP 的 OSX 机器 CakePHP 2 2 1 已正确安装和配置 这意味着当我浏览到 Index php 文件时 所有绿色条都显示出来 我已经完成了博客教程 并且正在开发我的第二个应用程序 其中脚手架已启动并运行 现在我第一次
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • 通过 $_SESSION 从一个脚本发送到另一个脚本期间数据丢失

    我正在尝试将一个充满属性的对象从一个 PHP 发送到另一个 PHP SESSION object obj where obj是一个用 foreach 循环指定的对象 foreach array of objects as obj SESSI
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账

随机推荐

  • Android 中的 javax.mail.AuthenticationFailedException

    尝试使用 JavaMail API 从我的 Gmail 帐户发送电子邮件时 我在 LogCat 中收到以下错误消息 11 09 11 04 14 385 W System err 18443 javax mail Authenticatio
  • SIMD编程语言[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 在过去的几年中 我进行了大量的 SIMD 编程 大部分时间我都依赖编译器内部函数 例如用于 SSE 编程的函数 或编程汇编来实现真正漂亮的功能 东西
  • 如何使用 PHP 中的 cURL 同时打开多个 URL?

    这是我当前的代码 SQL mysql query SELECT url FROM urls or die mysql error Query the urls table while resultSet mysql fetch array
  • 使用 Django 上传多个文件

    如何使用 Django 上传多个文件 经过一番痛苦之后我最终得到了 uploadify http www uploadify com 与 django 一起工作 但问题并不是真正的 django 的问题 而是让它与 Apple Mac 一起
  • 如何在 Angular2 中操作特定路径上的组件

    我有一个简单的TopbarComponent这基本上在我的视图顶部添加了一个引导式导航栏 由于我的 90 的模板应该包含这个指令 我想通过我的app component看起来像这样 import Component selector my
  • Servlet 3.0 异步

    servlet 3 0 异步功能与以下内容有何区别 ld servlet 实现 doGet request response Thread t new Thread new Runnable void run heavy processin
  • 将映射应用于函数的剩余参数

    在 Clojure 中 如果我有一个函数 f defn f r 我有一个 seq args 其中包含我想要调用 f 的参数 我可以轻松使用 apply apply f args 现在 假设我有另一个函数 g 它被设计为采用任意数量的可选命名
  • 使用多个连接字符串

    Info我的解决方案中有多个项目 其中一个是 DAL 另一个是 ASP NET MVC6 项目 由于 MVC6 项目也是启动项目 我需要在其中添加连接字符串 I saw 这个解决方案 但不被接受 也不起作用 My Try 应用程序设置 js
  • 如何从 PDF 中提取表格作为文本

    我有一个 PDF 文件 其中包含表格 文本和一些图像 我想在 PDF 中有表格的地方提取表格 现在正在手动从页面中查找表 从那里我捕获该页面并保存到另一个 PDF 中 import pypdf import PdfReader PdfWri
  • R 中 GARCH 的模拟

    我正在对 GARCH 模型进行模拟 模型本身并不是太相关 我想问你的是关于优化 R 中的模拟 最重要的是 如果你看到任何矢量化的空间 我已经考虑过 但我看不到它 到目前为止我所拥有的是这样的 Let ht cond variance in
  • 获取已安装的 Android 应用程序列表

    您好 我想获取用户设备上所有已安装应用程序的列表 我已经在谷歌上搜索了很长时间 但找不到我想要的内容 但这个链接是最接近的 并且工作正常 除了我是新人不明白如何使用 getPackages 方法 并用它创建一个列表 http www and
  • abbr 标签的标题可以设置样式吗?

    采取以下代码
  • 有没有办法通过 NodeJS 检索文件/文件夹的唯一 ID?

    我面临的问题很简单 我想跟踪文件 文件夹 即使它已被重命名 删除等 NodeJS 是否提供了访问文件中这些信息的方法 我尝试过默认文件系统模块fs stats https nodejs org api fs html fs class fs
  • “ArrayAdapter 要求资源 ID 为 TextView”XML 问题

    尝试设置视图以显示时出现错误ListView对于我想显示的文件 文本文件 我很确定这与 XML 有关 我只想显示来自的信息this file fileop ReadFileAsList Installed packages txt 我的代码
  • jCarousel - 如何通过自动滚动在悬停时暂停?

    JCarousel 最近发生了变化 2011 年 1 月 它曾经有一种方法可以通过自动滚动实现悬停暂停 在新版本中 我无法解决如何让自动滚动在悬停时停止 我希望滚动在鼠标悬停时停止并在鼠标移出时重新开始 有什么建议么 示例代码在这里 htt
  • HTML 无法更改 Div 的高度

    所以我正在开发井字游戏 但由于某种原因我的 div 不会改变它们的高度 html background color black color white text align center cell border 1px solid whit
  • 在 SQL LIKE 子句中使用 SqlParameter 不起作用

    我有以下代码 const string Sql select distinct name from tblCustomers left outer join tblCustomerInfo on tblCustomers Id tblCus
  • Firebase OrderByKey 的 startAt 和 endAt 给出错误的结果

    我有 3 个带有键的对象 如下所示 它们的格式为 YYYYMMDD 我正在尝试获取一个月的数据 但我没有得到所需的输出 当我这样查询时 var ref db child KPXECP6a1pXaM4gEYe0 ref orderByKey
  • Bootstrap 模态框不显示

    我想测试 Bootstrap 的模式元素并创建了一个小测试页面 但什么也没有出现 我想知道为什么 有什么线索吗 我从引导页面获取了源代码 我的测试页面位于http ronhome no ip org bootstrap modal html
  • Woocommerce,根据运输类别隐藏运输方法

    我试图根据运输类别隐藏除一种运输方法之外的所有运输方法 本质上是在选择属于特定类别的产品时强制使用 FedEx 隔夜方法 我从这段代码 并将其修改如下 add filter woocommerce available shipping me