Разрешение клиенту изменять статус заказа по электронной почте - PullRequest
0 голосов
/ 06 февраля 2020

Я ищу способ отображения кнопки в электронном письме клиенту, которая позволила бы ему изменить статус заказа для завершения. Я нашел код, который позволяет сделать это на странице моей учетной записи, и есть комментарий, чтобы не отображать эту кнопку в уведомлениях по электронной почте, и это то, что я ищу. Кто-нибудь знает способ сделать это:

Вот код:

<?php 
// My account > Orders (list): Rename "view" action button text when order needs to be approved
add_filter( 'woocommerce_my_account_my_orders_actions', 'change_my_account_my_orders_view_text_button', 10, 2 );
function change_my_account_my_orders_view_text_button( $actions, $order ) {
    $required_order_status = 'processing'; // Order status that requires to be approved

    if( $order->has_status($required_order_status) ) {
        $actions['view']['name'] = __("Approve", "woocommerce"); // Change button text
    }
    return $actions;
}

// My account > View Order: Add an approval button on the order
add_action( 'woocommerce_order_details_after_order_table', 'approve_order_button_process' );
function approve_order_button_process( $order ){
    // Avoiding displaying buttons on email notification
    if( ! ( is_wc_endpoint_url( 'view-order' ) || is_wc_endpoint_url( 'order-received' ) ) ) return;

    $approved_button_text  = __("Approve this order", "woocommerce");
    $required_order_status = 'processing'; // Order status that requires to be approved
    $approved_order_status = 'completed'; // Approved order status

    // On submit change order status
    if( isset($_POST["approve_order"]) && $_POST["approve_order"] == $approved_button_text
    && $order->has_status( $required_order_status ) ) {
        $order->update_status( $approved_order_status ); // Change order status
    }

    // Display a form with a button for order approval
    if( $order->has_status($required_order_status) ) {
        echo '<form class="cart" method="post" enctype="multipart/form-data" style="margin-top:12px;">
        <input type="submit" class="button" name="approve_order" value="Approve this order" />
        </form>';
    }
}

// My account > View Order: Add a custom notice when order is approved
add_action( 'woocommerce_order_details_before_order_table', 'approved_order_message' );
function approved_order_message( $order ){
    // Avoiding displaying buttons on email notification
    if( ! ( is_wc_endpoint_url( 'view-order' ) || is_wc_endpoint_url( 'order-received' ) ) ) return;

    $approved_order_status = 'completed'; // Approved order status

    if( $order->has_status( $approved_order_status ) ) {
        wc_print_notice(  __("This order is approved", "woocommerce"), 'success' ); // Message
    }
}

А вот как выглядит кнопка в профиле введите описание изображения здесь

Было бы очень хорошо, если бы эта кнопка появлялась в уведомлении о получении электронного письма!

Спасибо за ваш ответ, я новичок ie до php: /

...