在 WooCommerce 订单管理页面中按订单商品 SKU 或 ID 搜索

2023-11-28

我想要做的是能够在 WooCommerce 订单管理页面中按订单项目 SKU 或 ID 进行搜索。

到目前为止我所发现/所做的,但没有成功的是以下内容functions.php file.

add_filter( 'woocommerce_shop_order_search_fields', 'woocommerce_shop_order_search_sku' );

function woocommerce_shop_order_search_sku( $search_fields ) {

    $args = array( 'post_type' => 'shop_order' );

    $orders = new WP_Query( $args );

    if ( $orders->have_posts() ) {
        while( $orders->have_posts() ) {
            $post = $orders->the_post();
            $order_id = get_the_ID();
            $order = new WC_Order( $order_id );
            $items = $order->get_items();
            foreach( $items as $item ) {
                $search_order_item_sku = wp_get_post_terms( $item['product_id'], 'search_sku' );
                foreach( $search_order_item_sku as $search_sku ) {
                    add_post_meta( $order_id, "_search_sku", $search_sku->sku );
                }
            }
        }
    };

    $search_fields[] = '_search_sku';

    return $search_fields;

}

我认为问题在于$search_sku在与add_post_meta.

我也尝试过get_sku(), $item['sku']没有运气。


您对于将额外元数据保存到订单的想法是正确的。正如 jbby 和 helgatheviking 所建议的那样,woocommerce 订单 api 中默认没有可用的product_id 或 sku 的内置 postmeta。但是,您访问和保存元数据的方法不太正确。wp_get_post_terms将访问自定义分类信息,而不是元数据(使用get_post_meta为了那个原因)。您将能够使用此过滤器执行您想要执行的操作:

add_filter( 'woocommerce_shop_order_search_fields', function ($search_fields ) {
    $posts = get_posts(array('post_type' => 'shop_order'));

    foreach ($posts as $post) {
        $order_id = $post->ID;
        $order = new WC_Order($order_id);
        $items = $order->get_items();

        foreach($items as $item) {
            $product_id = $item['product_id'];
            $search_sku = get_post_meta($product_id, "_sku", true);
            add_post_meta($order_id, "_product_sku", $search_sku);
            add_post_meta($order_id, "_product_id", $product_id);
        }
    }

    return array_merge($search_fields, array('_product_sku', '_product_id'));
});

严格来说,您可能应该将呼叫转移到add_post_meta到一个钩子中,该钩子在订单最初保存到数据库时运行——这将防止您在搜索订单时进行不必要的跑腿工作。

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

在 WooCommerce 订单管理页面中按订单商品 SKU 或 ID 搜索 的相关文章

  • 使用 MYSQL 将 h:mm pm/am 时间格式插入数据库

    我正在尝试将以 h mm am pm 格式写入的时间插入到存储为标准 DATETIME 格式 hh mm ss 的数据库中 但我不知道如何将发布的时间转换为标准格式所以数据库会接受它 这是我到目前为止一直在尝试的 title POST in
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • 如何将变量插入 PHP 数组?

    我在网上查了一些答案 但都不是很准确 我希望能够做到这一点 id result id info array id Example echo info 0 这有可能吗 您需要的是 不推荐 info array id Example varia
  • 正则表达式上的换行符

    我试图替换两个标签之间的所有内容 但我无法构建正确的表达式 这就是我所做的
  • Smarty 如果 URL 包含

    使用 Smarty 标签我想确定 URL 是否包含单词 例如 if smarty get page contains product php 我知道 contains 不存在 但是我怎样才能轻松地编写类似的东西来实现上述代码呢 所有 PHP
  • 防止 Propel 插入空字符串

    当未设置列时 如何防止 Propel ORM 插入空字符串 CREATE TABLE user uid INTEGER PRIMARY KEY AUTO INCREMENT email VARCHAR 255 NOT NULL UNIQUE
  • php中的条件格式化html表与时间戳比较

    echo table style width 100 tr echo td Order td echo td Destination td echo td Location td echo td Status td echo td Time
  • 如何关闭未关闭的 HTML 标签?

    每当我们从数据库或类似来源获取一些经过编辑的用户输入内容时 我们可能会检索仅包含开始标记但不包含结束标记的部分 这可能会妨碍网站当前的布局 有客户端或服务器端的方法来解决这个问题吗 找到了一个很好的答案 使用 PHP 5 并使用 DOMDo
  • CodeIgniter 控制器 - JSON - AJAX

    我正在尝试通过 AJAX 使用 CodeIgniter 发送表单构建 并尝试使用 JSON 获取响应 但是 我只在打开开发人员选项卡时看到响应 我什至不确定这是否实际上是响应 因为它显示了两个 json 数据 它所显示的只是加载旋转器 然后
  • 获取字符串中的最后一个整数

    我需要隔离包含多个整数的字符串中最新出现的整数 我怎样才能得到23代替1 for lastnum1 text 1 out of 23 lastnum1 this gt getEval eregi replace out of text 你可
  • 访问sendBeacon发送的数据

    文档表明sendBeacon通过发送其数据HTTP POST request 但在 PHP 中 POST变量似乎是一个空数组 这是我的 JavaScript 代码 navigator sendBeacon beacon log php My
  • 如何纠正这个非法字符串偏移?

    我收到此错误 警告 第 32 行 home mysite public html wp content themes evento lib php extra class php 中的非法字符串偏移 type 我意识到文件中的这部分代码是错
  • 对 SimpleXML 数据进行排序和分组

    我正在对 XML 文件中的出版物数据进行排序和分组 我目前使用的方法效果很好大部分情况下 尽管我觉得有一种更有效的方法来完成我想要完成的任务 以下是目标节点的示例
  • Mysqli 更新抛出 Call to a member function bind_param() 错误[重复]

    这个问题在这里已经有答案了 我有一个 70 80 字段表单 需要插入到表中 因此我首先根据表单中的输入名称在数据库中创建了一个表 而不是手动创建一个巨大的插入语句 这是我使用的代码创建 更改表 function createTable ar
  • 如何在 Zend MVC 中实现 SSL

    我之前已经通过使用特定的安全文件夹 例如服务器上的 https 文件夹与 http 文件夹 实现了安全页面 我已经开始使用 Zend Framework 并希望应用程序的某些部分 例如登录 使用 https 我在谷歌上搜索过 甚至在这里搜索
  • 如何在 phalcon 框架中同时连接多个数据库在模型类中同时使用两个而不仅仅是一个

    在我的代码中我有两个数据库ABC and XYZ 我想在同一模型中使用两个数据库 而不是 phalcon 中的解决方案是什么 如何为此实现多个数据库连接 one
  • 如何删除文件

    我们有一个脚本 scripts ourscript php和一个文件 media movie1 flv 当我们运行时 我们如何删除这个文件ourscript php Using unlink http php net manual en f
  • 我可以在 PHP 会话变量中安全地存储用户名和密码吗?

    我想在 REST api 之上制作一个轻量级的 web 应用程序 用户只需进行一次身份验证 从那时起 所有针对 web api 的请求都希望通过以某种方式保持用户名和密码有效来完成 我已经做了一个工作原型我在哪里将用户名和密码存储在会话变量
  • 如何从 Laravel 执行存储过程

    我需要在表单提交数据后执行存储过程 我让存储过程按照我想要的方式工作 并且我的表单正常工作 我只是不知道从 laravel 5 执行 sp 的语句 它应该是这样的 执行 my stored procedure 但我似乎在网上找不到类似的东西
  • 使用 PHP 将 latin1_swedish_ci 转换为 utf8

    我有一个数据库 里面充满了类似的值 Dhaka 应该是 Dhaka 因为我在创建数据库时没有指定排序规则 现在我想修复它 我无法从最初获取数据的地方再次获取数据 所以我在想是否可以在 php 脚本中获取数据并将其转换为正确的字符 我已将数据

随机推荐

  • 用于在客户端读取 doc 和 docx 的 JavaScript 库

    我正在寻找一个 JavaScript 库 它可以读取 doc and docx 文件 重点仅在于文本内容 我对 MS Word 文件中的图片 公式或其他特殊结构不感兴趣 如果该库能够与 JavaScript FileReader 一起使用
  • T* 与 char* 指针算术

    假设我们有一个包含 N 个 T 类型元素的数组 T a N 根据C 14标准 在什么条件下我们可以保证 char void a 0 n sizeof T char void a n 0 lt n
  • “react-native run-android” - 构建成功,但出现错误类型 3 错误:活动类 MainActivity 不存在

    我尝试在 Android 模拟器上运行应用程序 但失败了 我跑react native run android BUILD是成功的 但我收到错误类型 3 并且我没有看到它安装在模拟器上 当我在cmd中运行 react native run
  • 使用请求登录 WordPress - Python3

    import requests with requests Session as s headers1 Cookie wordpress test cookie WP Cookie check datas log admin pwd adm
  • 三个js对象的单位是什么?

    var camera new THREE PerspectiveCamera 35 Field of view 800 640 Aspect ratio 1 Near 10000 Far var cube new THREE Mesh ne
  • 如何使用 C# 查询 NTP 服务器?

    我需要的只是一种使用 C 查询 NTP 服务器的方法 以获取返回的 NTP 服务器的日期时间string或作为DateTime 这怎么可能以最简单的形式实现呢 由于旧的接受答案已被删除 这是一个不再存在的 Google 代码搜索结果的链接
  • SQLite 提交期间数据库文件被莫名锁定

    我正在对 SQLite 数据库执行大量插入 我只使用一根线程 我批量写入以提高性能 并在发生崩溃时具有一定的安全性 基本上 我在内存中缓存了一堆数据 然后当我认为合适时 我循环遍历所有这些数据并执行插入 其代码如下所示 public voi
  • 64 位 Windows 上的 P/Invoke 是否需要与 32 位 Windows 上不同的签名?

    当我创建一个引用的签名时user32 dll例如我应该用user64 dll如果目标是 64 位计算机 DllImport user32 dll CharSet CharSet Auto public static extern bool
  • Microsoft 图表控件和 X 轴时间刻度格式

    我的 winforms 应用程序中有一个 Microsoft 图表控件 我目前在循环中播放 X 和 y 值 我还将 X 轴格式设置为 ChartAreas 0 AxisX LabelStyle Format 00 00 00 这作为时间格式
  • 如果我忘记关闭扫描集会怎样?

    假设我忘记关闭右方括号 的扫描集 那会发生什么 它会调用未定义的行为吗 Example char str Hello One Two Three char s1 50 0 s2 50 0 sscanf str s h s1 s2 UB pr
  • List.view 和 LazyList 有什么区别?

    我是 Scala 新手 我刚刚了解到LazyList被创建来取代Stream 同时他们添加了 view所有集合的方法 所以 我想知道为什么LazyList添加到 Scala 集合库 当我们可以做的时候List view 我刚刚看了 Scal
  • 如何在Conv2D层中使用keras指定填充?

    我正在尝试实施AlexNet使用 Keras 并检查 MATLAB 中的网络设计 如下所示 可以看出 第二个卷积层有 256 个大小为 5x5 的滤波器 48 个通道和 2 2 2 2 的填充 我怎样才能指定padding与 Keras 的
  • PHP 构造函数内的全局变量

    这应该是显而易见的 但我对 PHP 变量范围有点困惑 我在构造函数中有一个变量 我想稍后在同一个类的函数中使用它 我目前的方法是这样的 有没有比滥用环境变量更好的方法来做到这一点 谢谢 您可以使用类变量 它具有 类的上下文 当然 以 PHP
  • “HTTP 状态 401 - 身份验证失败:传入 SAML 消息无效”,Salesforce 作为实施 SSO 的 IdP

    我已经使用 Spring SAML 实现了 SSO 一切正常 到目前为止 它已与以下 IDP 合作 1 idp ssocircle com 2 openidp feide no 现在我正在使用 salesforce com 作为我的身份提供
  • 如何在 Prometheus/Grafana 中按系列名称对图例进行排序

    我有一个 Grafana 仪表板面板 配置为呈现 Prometheus 查询的结果 查询返回大量系列 右侧显示图例 如果用户正在寻找特定的系列 他们可能必须滚动浏览所有系列 并且很容易错过他们正在寻找的系列 所以我想按系列名称对图例进行排序
  • 长按按钮事件处理程序

    我看过好几篇这样的文章one描述如何使用按钮处理长按事件 我可以按照这些指示进行操作 但我想知道是否可以像处理点击一样进行操作 我处理点击的方式是在 XML 中定义处理程序 如下所示
  • 子类中Java静态块的执行

    我正在准备 Java 认证测试 我发现了一个与 Java 静态块执行相关的有趣问题 我花了很多时间阅读这个主题 但没有找到我正在寻找的答案 我知道静态块是在类加载到 JVM 中或调用 main 方法时执行的 但是 package oneCl
  • 重新复用为 MKV 但使用 FFmpeg 添加所有流

    我正在尝试自动化 FFmpeg 将给定目录中的所有视频文件重新混合为 MKV 我目前正在使用 ffmpeg i INPUT c copy OUTPUT mkv 但是 某些流会以这种方式被跳过 例如 如果有 2 个音频流 则只有 1 个进入输
  • 控制 R 中栅格值的图例和颜色?

    我正在尝试将 ESRI 网格绘制为表面的光栅图像 我已经弄清楚如何制作绘图 但不知道如何控制 R 的色标 open necessary libraries library raster library rgdal library ncdf
  • 在 WooCommerce 订单管理页面中按订单商品 SKU 或 ID 搜索

    我想要做的是能够在 WooCommerce 订单管理页面中按订单项目 SKU 或 ID 进行搜索 到目前为止我所发现 所做的 但没有成功的是以下内容functions php file add filter woocommerce shop