【问题标题】:woocommerce admin create order get customer id on createwoocommerce 管理员创建订单在创建时获取客户 ID
【发布时间】:2017-07-24 21:54:52
【问题描述】:

现在已经有几天了,我似乎找不到添加/更新用户元数据的钩子

add_user_meta( 'user_id', 'custom_key', 'custom_value');

在 woocommerce 管理中创建订单时(woocommerce->orders->添加订单),后端。 使用

add_action('woocommerce_process_shop_order_meta', 'admin_process_shop_order', 10, 1);

这适用于在处理订单时执行的操作。但是,我需要获取客户 ID,据我所知,在实际创建订单之前它并不存在(有意义)。

所以我的问题是,一旦创建订单并可以使用它进行搜索,我可以使用什么钩子(或其他解决方案)来获取客户 ID

get_post_meta($order_id, '_customer_user', true);

【问题讨论】:

  • 尝试关注订单状态的钩子,woocommerce_order_status_pending woocommerce_order_status_failed woocommerce_order_status_on-hold woocommerce_order_status_processing woocommerce_order_status_completed woocommerce_order_status_refunded woocommerce_order_status_cancelled
  • 支付完成后执行的钩子是woocommerce_payment_complete

标签: php wordpress woocommerce hook


【解决方案1】:

感谢@Gugan 的建议!看起来在你的帮助下,我终于能够把这个烂摊子收拾起来了:)

由于我只希望它触发一次,即在创建订单时(而不是在更新时再次触发),我不得不结合两个动作。

第一个'woocommerce_process_shop_order_meta'。在这里我可以检查帖子元数据是否存在(如果存在,则订单已经创建并且应该不理会)

function check_order($post_id){
    $new_order = get_post_meta($post_id, '_customer_user', true);
    if(!$new_order){
        add_action('woocommerce_order_status_[MY_CUSTOM_ORDER_STATUS]-processing', 'total_count');
    }
}add_action('woocommerce_process_shop_order_meta', 'check_order', 10, 1);

如果这是一个新订单,请转到 'woocommerce_order_status_[MY_CUSTOM_ORDER_STATUS]-processing'(使用我的函数 'total_count'

function total_count($post_id){
    $order = wc_get_order($post_id);
    $customer_id = $order->get_user_id();
    $user_role = get_user_meta($customer_id, 'wp_capabilities', true);
    $custom = serialize(array('[MY_CUSTOM_USER_ROLE]' => true));
    $today = date('Y-m-d');
    if($user_role = $custom){
        $current_total = get_user_meta($customer_id, 'total', true);
        $increment_total = $current_total+1;
        update_user_meta( $customer_id, 'total', $increment_total);
        update_user_meta( $customer_id, 'last', $today);
    }
}

现在,如果这是一个新订单并且客户是我的自定义用户角色,我只会在我的自定义用户元数据“总计”和“最后一次”上获得增量。另一个优点是它仅适用于一种订单状态(即在我的情况下为 [MY_CUSTOM_ORDER_STATUS]-processing)。

在这里为其他希望处理类似自定义订单创建工作的人记下我的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多