programing

Woocommerce 3에서 모든 배송 클래스 받기

stoneblock 2023. 9. 16. 08:30

Woocommerce 3에서 모든 배송 클래스 받기

이 견과류를 깨지는 못했지만, 뭔가 간단한 것을 놓치고 있다는 느낌을 지울 수가 없습니다.

관리자 설정 페이지에서 배송 클래스 목록을 제공해야 하는 WooCommerce 플러그인을 개발하고 있습니다.다른 질문의 답변에서 제시된 다음 코드는 다음이 작동해야 함을 나타냅니다.

$shipping           = new \WC_Shipping();
$shipping_classes   = $shipping->get_shipping_classes();
var_dump($shipping_classes);
die();

안타깝게도 출력이 빈 배열입니다.

저는 워드프레스 4.9.5와 우커머스 3.3.5를 사용하고 있습니다.도와주셔서 감사합니다!

업데이트 여기에 요약된 것과 정확히 같은 문제가 있습니다. get_terms()가 잘못된 분류법을 반환하고 해결 방법을 제공합니다.하지만 저는 그것이 해결책이라고 생각하지 않습니다.

모든 배송 클래스를 받으려면 다음과 같은 것만 있으면 됩니다.

$shipping_classes = get_terms( array('taxonomy' => 'product_shipping_class', 'hide_empty' => false ) );

테스트를 거쳐 작동합니다.이것은 당신에게 배열을 제공할 것입니다.WP_Term모든 선급의 물건들입니다.

Woocommerce에서는 배송 클래스가 아래에 있습니다.product_shipping_class사용자 정의 분류법


또는 이 사용자 지정 기능을 간단한 SQL 쿼리와 함께 사용할 수도 있습니다.

function wc_get_shipping_classes(){
    global $wpdb;
    $return $wpdb->get_results( "
        SELECT * FROM {$wpdb->prefix}terms as t
        INNER JOIN {$wpdb->prefix}term_taxonomy as tt ON t.term_id = tt.term_id
        WHERE tt.taxonomy LIKE 'product_shipping_class'
    " );
}

코드가 작동합니다.활성 하위 테마(또는 활성 테마)의 php 파일입니다.

USE(사용법)(테스트 예):

$shipping_classes = wc_get_shipping_classes(); // Get Shipping Classes
echo '<pre>'; print_r($shipping_classes); echo '</pre>'; // Test raw output   

이건 정말 쉬운 일이에요

/** 
 * @var WP_Terms[] $shipping_classes
 */
$shipping_classes = WC()->shipping()->get_shipping_classes();

아마도 누군가는 여전히 해결책을 찾고 있을 것입니다 :)

$WC_Shipping = new WC_Shipping();
$shipping_classes = $WC_Shipping->get_shipping_classes();
var_dump($shipping_classes);

언급URL : https://stackoverflow.com/questions/49844513/get-all-shipping-classes-in-woocommerce-3