【问题标题】:Email to specific shop manager : Woocommerce发送给特定商店经理的电子邮件:Woocommerce
【发布时间】:2021-09-23 13:49:49
【问题描述】:

我正在构建一个插件,将客户附加到商店经理。店长只能看到附属于他的客户订单。该插件有两个部分:

第一个,我已经建立了它,隐藏所有未附加到商店经理的订单。如果你想看看它是如何工作的,下面是代码:

function before_checkout_create_order($order, $data) {

    $store_manager_id = '';

    switch ($order->get_user_id()) {
        case 34:
            $store_manager_id = 18;
            break;

        case 33:
            $store_manager_id = 20;
            break;
    }

    $order->update_meta_data('_store_manager_id', $store_manager_id);
}
add_action('woocommerce_checkout_create_order', 'before_checkout_create_order', 20, 2);

function custom_admin_shop_manager_orders($query) {
    global $pagenow;
    $qv = &$query->query_vars;

    $currentUserRoles = wp_get_current_user()->roles;
    $user_id = get_current_user_id();

    if (in_array('shop_manager', $currentUserRoles)) {
        if ( $pagenow == 'edit.php' && 
                isset($qv['post_type']) && $qv['post_type'] == 'shop_order' ) {
            // I use the meta key from step 1 as a second parameter here
            $query->set('meta_key', '_store_manager_id');
            // The value we want to find is the $user_id defined above
            $query->set('meta_value', $user_id);
        }
    }

    return $query;
}
add_filter('pre_get_posts', 'custom_admin_shop_manager_orders');

?>

我需要帮助的第二部分:我正在尝试只为相关商店经理发送电子邮件。

例如:客户订购了一些产品,附加到他的店铺经理收到一封关于他的订单的电子邮件,但所有其他店铺经理都没有收到任何东西。

如果您有任何想法,请随意!

【问题讨论】:

  • 客户下单时发送邮件。您可以使用具有订单 ID 的 woocommerce_thankyou 挂钩,因此您可以轻松获取经理电子邮件并使用 wp_mail()。
  • 我有类似的项目,我使用 woocommerce_email_recipient_new_order 从 woocommerce 设置 + 我的供应商向我的主要电子邮件发送新订单电子邮件,如果您想使用电子邮件挂钩,我可以与您分享解决方案。我使用这个 bcs 我需要不同的电子邮件来通知他,所以它更符合我的插件。
  • 我对 Wordpress Hooks 的世界有点陌生,所以如果你有任何代码可以帮助我理解你是如何构建它的,那就太好了!

标签: php wordpress woocommerce


【解决方案1】:

将以下函数放在你的functions.php中

使用woocommerce_thankyou钩子

function notify_store_manager($order_get_id) {
    //Get current order
    $order = wc_get_order( $order_get_id );
    //Get the manager id for this order
    $manager_id = $order->get_meta('_store_manager_id');
    //Get manager data 
    $manager = get_userdata($manager_id);
    //Get manager email address
    $manager_email = $manager->user_email;

    //Build your email info
    $order_id  = $order->get_id();

    $to = $manager_email;
    $subject = 'You have new order'.$order_id.'';
    $body = 'You have new order with id '.$order_id.'';
    $headers = array('Content-Type: text/html; charset=UTF-8');
    
    wp_mail( $to, $subject, $body, $headers );
}
add_action('woocommerce_thankyou', 'notify_store_manager', 10); 

【讨论】:

  • 只是为了确定:订单如何获得经理ID?
  • 在你的函数 before_checkout_create_order 你设置订单元?
  • 我很笨...很久没做这个项目了^^谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-30
  • 2020-09-22
  • 1970-01-01
  • 2018-01-08
  • 2013-12-02
  • 1970-01-01
  • 2018-08-06
相关资源
最近更新 更多