WooCommerce:如何在订单元数据对象中获取带有自定义 ID 的订单?

约翰尼97

因为一个项目,我需要你的帮助。我已经搜索了很多,但我找不到解决方案。我正在尝试编辑名为的 WooCommerce 函数

  • woocommerce_account_orders


我已经添加了字段

  • mycustom_id

到订单元数据对象,因为我需要在 mycustom_id 字段中获取当前登录用户的所有订单:

  • (mycustom_id = current_user_id())


customer应该留下的支票我只需要添加其他current_user_id检查。

这应该保持原样:

  • '客户' => get_current_user_id()


. 这是我不工作的代码片段:

function woocommerce_account_orders( $current_page ) {
    $current_page    = empty( $current_page ) ? 1 : absint( $current_page );
    $customer_orders = wc_get_orders( apply_filters( 'woocommerce_my_account_my_orders_query', array(
        'customer' => get_current_user_id(),
        'mycustom_id' => get_current_user_id(),
        'page'     => $current_page,
        'paginate' => true,
    ) ) );

    wc_get_template(
        'myaccount/orders.php',
        array(
            'current_page'    => absint( $current_page ),
            'customer_orders' => $customer_orders,
            'has_orders'      => 0 < $customer_orders->total,
        )
    );
}

方法位于:https : //docs.woocommerce.com/wc-apidocs/source-function-woocommerce_account_orders.html#2465-2486


如何以像过滤器这样的智能方式将此功能添加到函数中,以及如何以正确的方式将自定义参数传递给函数?我已将参数保存为 order_meta 属性:

[5] => WC_Meta_Data Object (
     [current_data:protected] => Array (
          [id] => 3477
          [key] => mycustom_id
          [value] => 2
)

感谢您的帮助。我已经尝试了很多,但我是 PHP 新手,必须学习很多。

卡夏洛

如果你想改变这个查询,你可以通过调用woocommerce_my_account_my_orders_query过滤器而不是修改核心函数来实现,这样你就可以达到所需的效果,如下所示:

add_filter( 'woocommerce_my_account_my_orders_query', 'modify_my_order_query', 10, 1 );

function modify_my_order_query( $q ) {
    $q['customer'] = [ 1, 3 ]; // you customers ids here 

    return $q;
}

但是上面的这个功能只会在列表中显示订单,如果客户点击该订单查看详细信息,他将收到一条错误消息,因为他没有查看订单的权限,您需要修改该view_order功能

例如,您可以授予具有 ID 1 的用户查看用户 ID 3 订单的权限,如下所示:

function give_permissions( $allcaps, $cap, $args ) {
    $user = 3; //user id 
    if ( $cap[0] == 'view_order' ) {
        $allcaps[ $cap[0] ] = true;
    }
    return ( $allcaps );
}
add_filter( 'user_has_cap', 'give_permissions', 10, 3 );

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Woocommerce订单页面中,创建与订单ID相关的自定义文本字段

在WooCommerce中添加带有价格不含税的自定义订单元数据

从WooCommerce中的当前用户订单获取订单ID

通过变体ID获取WooCommerce订单商品

从订单ID获取订阅ID

如何在WooCommerce中获取用于创建自定义订单退货URL的订单密钥

我如何在Woocommerce中获取最新的订单ID

将所有特定订单商品自定义字段的总和保存为WooCommerce中的订单元数据

找不到带有'id'=的订单

在Woocommerce订单接收页面中以简码获取订单ID

订单行替换ID

在“编辑订单”页面上的自定义Woocommerce订单号下方添加order_id

当订单ID不可用时,通过WooCommerce电子邮件获取订单元数据

如何在WooCommerce中自动更新特定订单ID的订单状态

获取基于订单产品的订单ID

如何从magento中的$ observer获取订单ID

如何使用订单ID获取订单增量ID?

表格中的订单ID

如何在Infusionsoft中通过订单ID获取订单详细信息

Drupal Commerce订单管理页面,订单ID

Android订阅的订单ID

如何在销售订单onclick中的自定义操作中获取选定的订单ID?

如何在Magento中获取订单的下一个订单ID

shopify webhooks 中的订单 ID

如何获取销售订单 ID 并将其设置在 netsuite 的自定义记录中?

使用插件获取 Woocommerce 订单 ID

WooCommerce 在订单接收端点获取订单 ID 和订单密钥

在 WooCommerce 订单列表中显示 Dokan 自定义订单元数据

如何从 WooCommerce 中的订单密钥获取订单 ID?