source

WooCommerce의 사용자 지정 주문 작업

factcode 2023. 7. 3. 23:22
반응형

WooCommerce의 사용자 지정 주문 작업

나는 WooCommerce Orders 페이지에 Custom Order Action을 추가하려고 합니다.

WooCommerce의 Bulk Order Actions 드롭다운에 두 가지 새로운 옵션을 추가하고 싶습니다.

  1. 환불 표시
  2. 대기 표시

이와 관련하여 어떠한 도움도 주신다면 대단히 감사하겠습니다.

이 목표를 위해 해결해야 할 부분은 두 가지입니다.

첫 번째 부분은 개별 주문 페이지의 메타박스에서 사용자 지정 주문 작업을 받는 것입니다.동일한 작업을 수행하려고 했지만 결정적인 작업을 찾지 못했기 때문에 여기에 튜토리얼을 만들었습니다.

http://neversettle.it/add-custom-order-action-woocommerce/

두 번째 부분은 기본 주문 페이지의 대량 작업 드롭다운에서 사용자 지정 주문 작업을 추가하는 것입니다.Skyverge에는 다음과 같은 훌륭한 튜토리얼이 있습니다.

http://www.skyverge.com/blog/add-custom-bulk-action/

주의해야 할 유일한 구체적인 사항은 올바른 시스템을 사용하는 것입니다.post_typeWooCommerce 주문의 경우 해당 튜토리얼의 첫 번째 예제 대신 다음을 사용해야 합니다.

add_action('admin_footer-edit.php', 'custom_bulk_admin_footer');

function custom_bulk_admin_footer() {

    global $post_type;

    if($post_type == 'shop_order') {
    ?>
    <script type="text/javascript">
        jQuery(document).ready(function() {
            jQuery('<option>').val('export').text('<?php _e('Export')?>').appendTo("select[name='action']");
            jQuery('<option>').val('export').text('<?php _e('Export')?>').appendTo("select[name='action2']");
        });
    </script>
    <?php
    }
}

주의:shop_order상태 확인을 위해 게시물을 대체합니다.post_type대량 작업을 추가할 수 있습니다.

그러나 근본적으로 @brasofilo는 맞습니다 - 대부분의 경우 WooCommerce는 표준 WordPress 구조를 사용합니다.post_type메커니즘, 그리고 분류학.이 프로세스는 주문 페이지에 대량 작업을 추가하는 경우와 게시 페이지에 대량 작업을 추가하는 경우와 동일합니다.

그러나 개별 주문 페이지의 사용자 지정 주문 작업에 대해서는 맞습니다. 즉, WooCommerce만 해당되며 해당 부분을 해결하는 방법에 대한 첫 번째 튜토리얼을 참조해야 합니다.

다음은 최신 WooCommerce(쓰기 기준 7.5.1)와 함께 사용하는 사용자 지정 주문 작업을 생성하는 예입니다.

add_filter('woocommerce_order_actions', 'my_custom_woocommerce_order_actions', 10, 2);
add_action('woocommerce_process_shop_order_meta', 'my_custom_woocommerce_order_action_execute', 50, 2);

/**
 * Filter: woocommerce_order_actions
 * Allows filtering of the available order actions for an order.
 *
 * @param array $actions The available order actions for the order.
 * @param WC_Order|null $order The order object or null if no order is available.
 * @since 2.1.0 Filter was added.
 * @since 5.8.0 The $order param was added.
 */
function my_custom_woocommerce_order_actions($actions, $order)
{
    $actions['my-custom-order-action'] = __('Execute my custom order action', 'my-custom-order-action');
    return $actions;
}

/**
 * Save meta box data.
 *
 * @param int $post_id Post ID.
 * @param WP_Post $post Post Object.
 */
function my_custom_woocommerce_order_action_execute(int $post_id, WP_Post $post)
{
    if (filter_input(INPUT_POST, 'wc_order_action') !== 'my-custom-order-action') {
        return;
    }

    $order = wc_get_order($post_id);
    $order->add_order_note(__('My Custom Order Action was executed', 'my-custom-order-action'));
}

enter image description here

언급URL : https://stackoverflow.com/questions/23994869/custom-order-action-in-woocommerce

반응형