【问题标题】:Woocommerce Send Mail In Order PageWoocommerce 按订单页面发送邮件
【发布时间】:2018-01-19 07:24:47
【问题描述】:

我想在 woocommerce 中创建发货通知程序。例如,当我输入跟踪代码时,它必须将此代码发送邮件给客户。所以;

我创建了这个元框:

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>
        ';
}

我正在用这个保存跟踪代码:

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);
}

但是$useremail = $order-&gt;get_billing_email(); 行给了我一个错误。怎么了?

【问题讨论】:

    标签: php wordpress email woocommerce orders


    【解决方案1】:

    问题在于 $order_id 在您最后一个挂钩函数中不作为参数存在。而是使用可用的$post_id,即订单 ID。

    所以你应该有:

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

    现在应该可以了。

    【讨论】:

    • 谢谢你。有用。我想再问一个问题。当我更新或更改另一个字段时,它会再次发送此邮件。我该如何解决?
    • @bilimokur 提出一个新问题 再次向其添加相同的代码,例如“Woocommerce 按顺序发送邮件页面重复问题”……一旦完成,请在此处通知我,我会回答它。
    • 我发布了一个新问题。先感谢您。 stackoverflow.com/questions/48346184/…
    猜你喜欢
    • 1970-01-01
    • 2018-10-24
    • 2018-04-14
    • 2017-08-08
    • 2015-08-19
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    相关资源
    最近更新 更多