我正在使用following code来解决此问题,但这不适用于来宾客户的订单。但是,这适用于属于某些注册用户/客户的订单,但不适用于属于访客客户的订单。
的answer解决方案function cristmas_bulk_editing_orders(){
if(!is_admin()) return; // Will work only from Admin Backed.
else {
$order_id = 9458;
$new_customer_id = 479;
// Getting the postmeta customer ID for 'order' post-type
$customer_id = get_post_meta( $order_id, '_customer_user', true );
var_dump($customer_id);
// If it's an existing order and doesn't have already this user ID
// It update the customer ID
if( !empty($customer_id) && $new_customer_id != $customer_id )
update_post_meta($order_id, '_customer_user', $new_customer_id,0);
echo 'order updated';
}
}
cristmas_bulk_editing_orders();
原始问题
我们通过woocommerce order export& amp;来自woocommerce团队的导入插件..
但是在这个过程中出了问题..大多数订单都没有分配任何客户..
所以现在,当新客户注册时,他/她会自动分配其中一个订单..
所以他们基本上都看到他们最近订单中的1个订单属于其他客户cusotmer,然后他们拥有关于其他客户的所有信息。他们的电子邮件等..
所以一个选择是我找到所有订单(没有客户帮助他们的问题)并且我将它们分配给管理员..但是这也有一些问题......
所以这些新注册用户没有其他任何选项可以分配旧订单..
请帮忙
答案 0 :(得分:2)
可能你可以尝试基于SQL查询的其他类似功能,这应该可以解决问题。在开始之前,进行数据库备份。我添加了控件(或限制),如:
YYYY-MM-DD 00:00:00
日期时间格式)所以这就是代码:
function easter_bulk_editing_orders(){
if( ! is_admin() ) return; // Will work only from Admin Backed.
else {
$processed_orders = array();
// Define the replacement user ID
$replacement_user_id = '2500';
// Define the DATE LIMIT for guest orders max date limit
$max_date = '2017-12-09 00:00:00';
// Define an order range
$order_id_min = '0';
$order_id_max = '100000';
global $wpdb;
// Get all guest orders below a defined max date
$old_guest_orders = $wpdb->get_results( "
SELECT pm.*, p.post_date
FROM {$wpdb->prefix}postmeta AS pm
LEFT JOIN {$wpdb->prefix}posts AS p ON pm.post_id = p.ID
WHERE pm.post_id BETWEEN $order_id_min AND $order_id_max
AND pm.meta_key LIKE '_customer_user'
AND ( pm.meta_value LIKE '0' OR pm.meta_value LIKE '' )
AND p.post_date <= '$max_date'
" );
foreach( $old_guest_orders as $guest_order ){
$meta_id = $guest_order->meta_id;
$wpdb->query( "
UPDATE {$wpdb->prefix}postmeta as pm
SET pm.meta_value = '$replacement_user_id'
WHERE pm.meta_id = '$meta_id'
" );
// Set each order ID in an array
$processed_orders[] = $guest_order->post_id;
}
// Testing ( raw output of processed orders IDS )
var_dump($processed_orders);
}
}
// Run the function
easter_bulk_editing_orders();
代码进入活动子主题(活动主题或任何插件文件)的function.php文件中。
您只需使用此功能一次,然后将其删除(见下文)。
用法:
将此代码粘贴并保存在function.php文件中后,在浏览器中显示或重新加载任何管理页面。 现在你可以用这种方式评论函数并保存:
// easter_bulk_editing_orders();
检查订单是否已根据需要更改,并删除所有此代码。
代码经过测试并有效。
答案 1 :(得分:0)
导入时出错,请尝试重新导入。你有没有尝试过WP All Import Premium。它将使用拖放标题,类别和元字段导入任何内容。您还可以在导入时为元发布新的元名称。如果您需要更多帮助,请分享更多详细信息。