Замените название продукта на SKU на страницах заказов администратора Woocommerce (раздел доставки) - PullRequest
2 голосов
/ 03 мая 2019

Я хотел бы заменить название продукта на SKU только в Woocommerce -> Заказы -> Детали заказа в админке WordPress, расположенном в разделе Доставка.

sku instead of product name in shipping section

Я попробовал следующий код, но он не работал. Я не разбираюсь в PHP.

add_filter( 'woocommerce_order_item_shipping_get_name', 'filter_order_item_shipping_get_name', 10, 2 );
function filter_order_item_shipping_get_name( $item_name, $order_item ) {
    if ( is_admin() && $order_item->is_type('line_item') ) {
        $product = $order_item->get_product();

        if( $sku = $product->get_sku() ) {
            $item_name = $sku;
        }
    }
    return $item_name;
}

Можно ли узнать правильный код для замены названия товара на SKU только в разделе Woocommerce -> Заказы -> Детали заказа в бэкэнд-администрировании WordPress?

Как мне решить эту проблему?

1 Ответ

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

Фильтр, который вы хотите использовать: woocommerce_order_item_display_meta_value.Он принимает 3 параметра, а третий - объект доставки в том месте, где вы надеетесь подключиться. Вы проверяете, что его тип равен 'shipping', чтобы убедиться, что вы не изменяете другие области.Затем вы должны получить родительский объект заказа, получить из него объекты элементов заказа и просмотреть их, чтобы создать строку вывода.

add_filter( 'woocommerce_order_item_display_meta_value', 'filter_order_item_display_meta_value', 10, 3 );
function filter_order_item_display_meta_value( $meta_value, $meta_object, $order_item ) {

    if ( is_admin() && $order_item->is_type('shipping') ) {

        $meta_values = [];
        $order = $order_item->get_order();
        $order_items = $order->get_items();

        foreach( $order_items as $order_item ){

            $quantity   = $order_item->get_quantity();
            $product    = $order_item->get_product();
            $sku        = $product->get_sku();
            $name       = $product->get_name();

            if( $sku ) {
                $meta_values[] = $sku . ' × ' . $quantity;
            } else {
                $meta_values[] = $name . ' × ' . $quantity;
            }
        }

        return implode( ', ', $meta_values );

    }

    return $meta_value;
}
...