Показать кнопку «завершить» действие для заказа WooCommerce с пользовательским статусом - PullRequest
0 голосов
/ 15 мая 2019

Я добавил пользовательский статус WooCommerce со следующим кодом и хочу

function register_shipped_status() {

    register_post_status( 'wc-shipped', array(
        'label'                     => 'Shipped',
        'public'                    => true,
        'exclude_from_search'       => false,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( 'Versendet <span class="count">(%s)</span>', 'Versendet <span class="count">(%s)</span>' )
    ) );

}
add_action( 'init', 'register_shipped_status' );

function add_shipped_to_order_statuses( $order_statuses ) {

    $new_order_statuses = array();

    // add new order status after processing
    foreach ( $order_statuses as $key => $status ) {
        $new_order_statuses[ $key ] = $status;
        if ( 'wc-processing' === $key ) {
            $new_order_statuses['wc-shipped'] = 'Versendet';
        }
    }

    return $new_order_statuses;

}
add_filter( 'wc_order_statuses', 'add_shipped_to_order_statuses' );

Это работает нормально. Статус WooCommerce можно выбрать, но я хочу, чтобы кнопка «завершена» в списке заказов.

Смотрите скриншот:

enter image description here

Можно ли добавить эту кнопку WooCommerce ко всем заказам с моим пользовательским статусом WooCommerce?

1 Ответ

1 голос
/ 16 мая 2019

Чтобы кнопка «завершить» для заказов с пользовательским статусом заказа, используйте следующее:

add_filter( 'woocommerce_admin_order_actions', 'customize_admin_order_actions', 10, 2 );
function customize_admin_order_actions( $actions, $order ) {
    // Display the "complete" action button for orders that have a 'shipped' status
    if ( $order->has_status('shipped') ) {
        $actions['complete'] = array(
            'url'    => wp_nonce_url( admin_url( 'admin-ajax.php?action=woocommerce_mark_order_status&status=completed&order_id=' . $order->get_id() ), 'woocommerce-mark-order-status' ),
            'name'   => __( 'Complete', 'woocommerce' ),
            'action' => 'complete',
        );
    }
    return $actions;
}

Код помещается в файл functions.php вашей активной дочерней темы (или активной темы). Проверено и работает.

enter image description here

Похожие: Добавление пользовательского статуса заказа «Отправлено» в Woocommerce

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...