작성일자
카테고리 워드프레스/워드프레스 쇼핑몰

우커머스에는 기본적으로 설정된 주문 상태가 있습니다. 



이들 주문 상태 외에 사용자 정의 해서 주문 상태를 추가할 수 있는 방법을 알아보겠습니다.


/** 

 * Register new status

**/

function register_custom_order_status() {

    register_post_status( 'wc-shipping', array(

        'label'                     => '배송중',

        'public'                    => true,

        'exclude_from_search'       => false,

        'show_in_admin_all_list'    => true,

        'show_in_admin_status_list' => true,

        'label_count'               => _n_noop( '배송중 <span class="count">(%s)</span>', '배송중 <span class="count">(%s)</span>' )

    ) );

    register_post_status( 'wc-prepare', array(

        'label'                     => '상품 준비중',

        'public'                    => true,

        'exclude_from_search'       => false,

        'show_in_admin_all_list'    => true,

        'show_in_admin_status_list' => true,

        'label_count'               => _n_noop( '상품 준비중 <span class="count">(%s)</span>', '상품 준비중 <span class="count">(%s)</span>' )

    ) );


}

add_action( 'init', 'register_custom_order_status' );


위 코드를 테마의 functions.php 파일에 추가합니다. 두 가지 주문 상태를 만들었는데 여러 개의 주문 상태를 추가할 수 있다는 것을 보여주기 위한 것입니다. 계속 추가할 경우 코드의 같은 부분을 복사해서 붙여넣고 빨간색의 글자만 변경하면 됩니다.


// Add to list of WC Order statuses

function add_shipping_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-shipping'] = '배송중';

        }

    }


    return $new_order_statuses;

}

add_filter( 'wc_order_statuses', 'add_shipping_to_order_statuses' );

다음으로 위 코드를 추가합니다. 이 코드는 배송중이라는 주문 상태에 해당되는 코드이므로 상품 준비중에 대해서는 별도의 코드를 만듭니다. 역시 코드를 복사해서 빨간색 부분만 수정하면 됩니다. 그러면 아래와 같이 됩니다.


// Add to list of WC Order statuses

function add_prepare_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-prepare'] = '상품 준비중';

        }

    }


    return $new_order_statuses;

}

add_filter( 'wc_order_statuses', 'add_prepare_to_order_statuses' );

다음으로 아이콘을 만듭니다. 주문 목록 페이지 가장 좌측에 있는 아이콘입니다.


/**

 * Add order status icon CSS

 */

add_action('admin_head', 'shipping_font_icon');

 

function shipping_font_icon() {

  echo '<style>

      .widefat .column-order_status mark.tips:after{

        font-family:WooCommerce;

        speak:none;

        font-weight:400;

        font-variant:normal;

        text-transform:none;

        line-height:1;

        -webkit-font-smoothing:antialiased;

        margin:0;

        text-indent:0;

        position:absolute;

        top:0;

        left:0;

        width:100%;

        height:100%;

        text-align:center;

      }

 

      .widefat .column-order_status mark.shipping:after{

        content:"\e030";

        color:#ff0000;

      }

  </style>';

}

아이콘의 모양은 하단의 content에 있는 "\e030"으로 결정되며 이것은 우커머스 플러그인에 내장된 폰트 아이콘입니다. 이 코드를 알아내기 위해서는 wp-content\plugins\woocommerce\assets\fonts 폴더에 있는 woocommerce.ttf라는 폰트 파일을 컴퓨터에 설치하고 윈도우 프로그램에 내장된 프로그램인 문자표로 이 폰트를 선택하면 됩니다. 색상은 color의 색상코드를 설정하면 됩니다. 여기서는 빨간색으로 했습니다.



아이콘을 선택하면 하단에 U+E603이 표시되는데 E603이 아이콘의 코드입니다. 아이콘의 좌측 상단으로부터 일련번호로 코드 숫자가 만들어지는데 좌측 상단 첫 번째 아이콘의 코드는 E000입니다. 그런데 10진수가 아니라 16진수라서 11번째 아이콘인 둥근 원이 있는 하방향 화살표는 E011이 아니라 E00A가 되고 다음 아이콘은 E00B가 됩니다. 그러다가 16번째 아이콘은 E00F이고 17번째 아이콘이 E010이 됩니다. 즉 16개 단위로 10 단위가 됩니다. 그러니 33번째의 아이콘은 E020이 됩니다. 마지막 4개의 아이콘은 E600으로 시작합니다.


/**

 * Add order status icon CSS

 */

add_action('admin_head', 'prepare_font_icon');

 

function prepare_font_icon() {

  echo '<style>

      .widefat .column-order_status mark.prepare:after{

        content:"\e012";

        color:#ff0000;

      }

  </style>';

}

상품 준비중은 시계 아이콘으로 설정했습니다. 이전의 아이콘 코드에서 .widefat .column-order_status mark.tips:after 부분은 추가하지 않아도 됩니다.



주문 편집 페이지에서 하나의 주문을 선택하고 주문 상태를 변경합니다. 주문작업 박스에서 주문 저장하기 버튼을 클릭하면 주문 상태가 변경되며 고객에게 메일을 보낼 수도 있습니다.



주문 목록 페이지에서 상단에 별도의 탭으로 관리되며 아이콘도 변경됩니다.



고객의 나의 계정 페이지에서는 주문에 대한 상태가 변경됩니다. 보기를 클릭하면 아래와 같이 나타납니다.






고객 메일은 위와 같이 오게 됩니다.



저작자 표시 비영리 변경 금지
신고

티스토리 툴바