Php Woocommerce for Wordpress:如何修改订单号/id?
我已经将WooCommerce应用到我的网店,并连接了一个CorvusPay网关进行在线支付 现在我们遇到的问题是,Corvus要求我的订单号包含字符(大写和小写)以及数字 我在Wordpress中看到并尝试了许多插件和过滤器,了解如何更改我的订单号,但在订单处理并发送到Corvus的过程中,订单号仍然是原来的post ID 我知道WooCommerce使用Wordpress post ID来创建初始订单号,但我如何更改 如何修改WooCommerce,使其使用特定的订单号生成方法,即我希望订单号为“Kr-12345”和而不是“12345”Php Woocommerce for Wordpress:如何修改订单号/id?,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我已经将WooCommerce应用到我的网店,并连接了一个CorvusPay网关进行在线支付 现在我们遇到的问题是,Corvus要求我的订单号包含字符(大写和小写)以及数字 我在Wordpress中看到并尝试了许多插件和过滤器,了解如何更改我的订单号,但在订单处理并发送到Corvus的过程中,订单号仍然是原来的post ID 我知道WooCommerce使用Wordpress post ID来创建初始订单号,但我如何更改 如何修改WooCommerce,使其使用特定的订单号生成方法,即我希望订单
我需要一种方法来改变它的数字生成方法,而不是使用类似插件的顺序数字,因为这只会改变我Wordpress页面中的数字。你可以使用
woocommerce\u Order\u number
钩子来过滤你想要的值。解释如何使用它简单地添加前缀和后缀
add_filter( 'woocommerce_order_number', 'change_woocommerce_order_number' );
function change_woocommerce_order_number( $order_id ) {
$prefix = 'VK/';
$suffix = '/TS';
$new_order_id = $prefix . $order_id . $suffix;
return $new_order_id;
}
看来这能满足你的要求。如果不需要,您可以删除后缀,或者对$new\u order\u id的格式进行任何必要的调整
要记住的另一件事是,如果您使用的插件与之类似,那么它可以选择设置内置的发票前缀。这看起来像是网关开发人员未正确实现网关的另一种情况。对于我的回答,我假设您正在使用 如果使用classes.php中的
process_payment()
函数,您将看到插件每次都会将订单的实际post_id发送到网关:
/**
* This method accepts payment request initiated by user, and redirects
* him to CorvusPay IPG.
* @param int $order_id
* @return array
*/
public function process_payment($order_id) {
// Load options
$options = $this->_getOptions();
$checkout_page_id = $options[CpsiKeys::OPTION_CHECKOUT_PAGE_ID];
return array(
'result' => 'success',
'redirect' => add_query_arg('order_id', $order_id, get_permalink($checkout_page_id))
);
}
这意味着无论你尝试什么技巧,如果不修改这个函数,你都无法克服这个问题,因为插件总是发送错误的信息(或者至少是错误的格式)
对此,有许多修复程序:
ABx
是您的前缀
Koda我尝试了这个精确的解决方案,但问题是它仍然没有将订单号发送给corvus;因为,它要做的第一件事是获取帖子id,将其设置为订单号,将该编号发送到corvus,然后转到我的wordpress,在那里它会被过滤器修改。指南最后写道:“WooCommerce提供了另一个过滤器WooCommerce_new_order_data,允许您在使用wp_insert_post()将订单数据插入wp_posts表之前修改订单数据。我们将在另一篇文章中查看。”但我似乎找不到与此相关的任何内容……感谢您的帮助!我已经尝试了代码修复,它确实在地址栏中发生了变化,但当它发送时,它只是停止并重定向到我的主页,就像什么都没发生一样。我也就此联系了Corvus,希望他们能解决一些问题。
/**
* This method accepts payment request initiated by user, and redirects
* him to CorvusPay IPG.
* @param int $order_id
* @return array
*/
public function process_payment($order_id) {
// Load options
$options = $this->_getOptions();
$checkout_page_id = $options[CpsiKeys::OPTION_CHECKOUT_PAGE_ID];
return array(
'result' => 'success',
'redirect' => add_query_arg('order_id', 'ABx' . $order_id, get_permalink($checkout_page_id))
);
}