programing

Woocommerce 3+의 [내 계정 주문(My Account Orders)]테이블에 커스텀 컬럼 추가

newstyles 2023. 3. 5. 09:39

Woocommerce 3+의 [내 계정 주문(My Account Orders)]테이블에 커스텀 컬럼 추가

Woocommerce 3.5.x에는 사용자 계정(내 계정) 영역에 사용자의 이전 주문을 표시하는 특수 페이지가 있습니다.

이 페이지는 기본 5열로 표시됩니다.

다음은 5컬럼으로 구성된 woocommerce Orders 영역의 스크린샷입니다.

마이오더

이것을 바꿀 방법을 찾을 수 없다.

기본값으로 새 열을 추가하려면 어떻게 해야 합니까?

여기에는 새 열을 추가하는 두 가지 기능이 필요합니다.

두 번째 기능 후크는 복합 후크입니다.woocommerce_my_account_my_orders_column_{$column_id}어디에{$column_id}첫 번째 기능에 설정된 칼럼 키 슬러그로 교체해야 한다.

두 번째 함수는 표시된 행 값을 관리하며, 예를 들어 사용자 정의 필드를 추가하여 사용자 정의 순서 메타 데이터 값을 가져올 수 있습니다.

코드:

add_filter( 'woocommerce_account_orders_columns', 'add_account_orders_column', 10, 1 );
function add_account_orders_column( $columns ){
    $columns['custom-column'] = __( 'New Column', 'woocommerce' );

    return $columns;
}

add_action( 'woocommerce_my_account_my_orders_column_custom-column', 'add_account_orders_column_rows' );
function add_account_orders_column_rows( $order ) {
    // Example with a custom field
    if ( $value = $order->get_meta( '_custom_field' ) ) {
        echo esc_html( $value );
    }
}

코드가 기능합니다.php 파일에는 액티브한 아이 테마(또는 활성 테마).테스트 및 동작.


완료되었으며 내 계정 주문 테이블에 사용자 지정 열을 추가했습니다.

여기에 이미지 설명 입력

테이블 html 출력에서 변경할 경우 템플릿파일을 덮어쓸 필요가 있습니다.myaccount/orders.php

내 계정 페이지에서 주문 템플릿을 변경하지 않으려면당신이 해야 할 일은 다음과 같습니다.

첫 번째:

function wc_add_myaccount_order_column( $columns ) {
    $columns[ 'custom-column' ] = __( 'Custom Column', 'woocommerce' );
}
add_filter( 'woocommerce_my_account_my_orders_columns', 'wc_add_myaccount_order_column' );

두 번째:

function wc_custom_column_display( $order ) {
    // do something here
    echo "testing";
}
add_action( 'woocommerce_my_account_my_orders_column_custom-column', 'wc_custom_column_display' );

위의 코드는 "Custom Column(사용자 지정 열)" 아래에 각 순서로 "testing(테스트 중)"으로 표시됩니다.

주의: 실제로 템플릿 전체를 변경하는 경우(예: 설계 등)당신은 위의 첫 번째 답을 따를 수 있습니다.

승인된 답변을 개선하기 위해 행을 추가하여 열의 위치(합계 후)를 선택합니다.

function sv_wc_add_my_account_orders_column( $columns ) {

    $new_columns = array();

    foreach ( $columns as $key => $name ) {

        $new_columns[ $key ] = $name;

        // add ship-to after order status column
        if ( 'order-total' === $key ) {  //this is the line!
            $new_columns['custom-column'] = __( 'Custom Column', 'woocommerce' );
        }
    }

    return $new_columns;
}
add_filter( 'woocommerce_my_account_my_orders_columns', 'sv_wc_add_my_account_orders_column' );


    function wc_custom_column_display( $order ) {
        // do something here
        echo "testing";
    }
    add_action( 'woocommerce_my_account_my_orders_column_custom-column', 'wc_custom_column_display' );

WooCommerce 5.9에서는 Lioc The Aztect의 답변을 얻을 수 없었습니다.나에게 효과가 있었던 것은, 다음과 같습니다.

add_filter( 'woocommerce_account_orders_columns', 
'add_customer_email_column');
    function add_customer_email_column( $columns ){
        $new_columns = [
        "order-number" => $columns["order-number"],
        // ...
        "customer-email" => __( 'Customer Email', '' ),
        // ...
        "order-actions" => $columns["order-actions"]
    ];
    return $new_columns;
}

add_action( 'woocommerce_my_account_my_orders_column_customer-email', 
'add_customer_email_content' );
    function add_customer_email_content($order) {
    echo esc_html($order->get_billing_email());
}

미포함if ($value = $order->get_meta( '_custom_field' ))막아요 도움이 됐으면 좋겠네요

언급URL : https://stackoverflow.com/questions/53623789/add-a-custom-column-to-my-account-orders-table-in-woocommerce-3