doutai1509 2018-01-19 07:24
浏览 101
已采纳

Woocommerce在订单页面发送邮件

I want to create shipping notifier in woocommerce. For example when i enter track code, it must send a mail this code to customer. So;

I created this meta box:

add_action('add_meta_boxes', 'kargo_takip');
function kargo_takip() {
    add_meta_box('kargo_takip_meta_box', 'Kargo Takip', 'kargo_takip_meta_box_ekle', 'shop_order', 'side', 'high');
}

function kargo_takip_meta_box_ekle() {
    global $post;

    $meta_field_data = get_post_meta($post->ID, '_kargo_takip', true) ? get_post_meta($post->ID, '_kargo_takip', true) : '';

    echo '
        <input type="hidden" name="kargo_takip" value="' . wp_create_nonce() . '">
        <p style="border-bottom:solid 1px #eee;padding-bottom:13px;">
        <input type="text" style="width:250px;";" name="kargo_takibi" placeholder="' . $meta_field_data . '" value="' . $meta_field_data . '"></p>
        ';
}

And i am saving track code with this:

add_action('save_post', 'kargo_takip_kaydet', 10, 1);

function kargo_takip_kaydet($post_id) {

    if (!isset($_POST['kargo_takip'])) {
        return $post_id;
    }
    $nonce = $_REQUEST['kargo_takip'];

    if (!wp_verify_nonce($nonce)) {
        return $post_id;
    }

    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return $post_id;
    }

    if ('page' == $_POST['post_type']) {

        if (!current_user_can('edit_page', $post_id)) {
            return $post_id;
        }
    } else {

        if (!current_user_can('edit_post', $post_id)) {
            return $post_id;
        }
    }

    $kargo_takip_no = $_POST['kargo_takibi'];

    $order     = wc_get_order($order_id);
    $useremail = $order->get_billing_email();

    update_post_meta($post_id, '_kargo_takip', $kargo_takip_no);
    wp_mail($useremail, "Your order picked up", "Your track code: " . $kargo_takip_no);
}

But $useremail = $order->get_billing_email(); line gives me an error. What is wrong?

  • 写回答

1条回答 默认 最新

  • duandiaoqian5795 2018-01-19 08:19
    关注

    The problem is just that $order_id doesn't exist as argument in your last hooked function. Instead use available $post_id which is the Order ID.

    So you should have:

        $order     = wc_get_order( $post_id ); <==== ==== HERE
        $useremail = $order->get_billing_email();
    

    This should work now.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 如何将下列的“无限压缩存储器”设计出来
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口