繁体   English   中英

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

[英]Add order_id beneath custom Woocommerce Order Number on Edit Order page

我们使用 Booster 插件创建一个唯一的 WooCommerce 订单号,例如 WC-456544646。 我现在需要添加在后台和 WooCommerce API 中仍然有效的原始 order_id。

Booster 为原始订单 ID [wcj_order_id]提供了一个简码

这是“编辑订单”页面上自定义 Woo 订单号的 HTML。

<h2 class="woocommerce-order-data__heading">
Order #WC-63872414 details</h2>

在此处输入图片说明

如何在“编辑订单”页面上插入短代码?

(Woocommerce/Orders/[选择订单/订单详情] 例如/post.php?post=638&action=edit

我查看了 Booster 插件代码。 它使用woocommerce_order_number过滤器钩子来替换 WC 编辑订单页面和订单中的订单 ID。 /woocommerce-jetpack/includes/class-wcj-order-numbers.php

add_filter( 'woocommerce_order_number', array( $this, 'display_order_number' ), PHP_INT_MAX, 2 );

由于它没有在任何动作挂钩中传递WCJ_Order_NumbersWC_Jetpack类的 $instance,为了删除此文本并使用自定义文本,我们不能使用remove_filter函数。 因此,要覆盖 Booster 插件,我们必须将另一个函数挂接到woocommerce_order_number

将 WC order_id 添加到管理订单页面:

add_action( 'admin_init', 'append_wc_order_id');
function append_wc_order_id()
{
    add_filter('woocommerce_order_number', 'filter_wc_order_id', PHP_INT_MAX);
    function filter_wc_order_id($order_id)
    {
        /* If you are using 'init' action hook, uncomment bellow line to apply this code only to your admin pages: */
        //if (!is_admin()) return $order_id;
        return $order_id . ' | #' . do_shortcode('[wcj_order_id]');
    }
}

此代码转到您的主题的functions.php文件。
测试 & Wordking :

截屏

笔记:
1. Booster 代码中的过滤器钩子,使用PHP_INT_MAX优先级,所以为了覆盖它,我们不能使用更大的整数优先级。 因此,在其他插件完成工作后,我使用admin_init操作将我的函数挂接到woocommerce_order_number 它可能会按您的预期运行,无需使用 init 钩子,但不能保证。 您也可以使用init hook 而不是admin_init在站点的前端添加 WC order_id(例如“我的帐户”页面)。 阅读代码中的注释。
2. 要删除管理页面上 Booster 插件生成的订单 ID,您可以更改此行:

return $order_id . ' | #' . do_shortcode('[wcj_order_id]');

到:

return do_shortcode('[wcj_order_id]');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM