Заменить название продукта на SKU на страницах заказов администратора Woocommerce

Опять же, и это будет мой последний вопрос по этой теме (прошу прощения, если я задал слишком много вопросов), я хотел бы заменить название продукта на SKU только в Woocommerce -> Заказы -> Детали заказа в админке бэкэнда. WordPress.

sku вместо названия продукта

Я не нашел понятного объяснения, как это сделать на форумах (у меня действительно нет навыков работы с php-кодом). Я только что обнаружил, что могут быть использованы фильтры-хуки «woocommerce_order_items» и «woocommerce_order_itemmeta», но, честно говоря, я не понимаю, как их использовать.

Можно ли узнать правильный код для замены названия продукта на SKU только в Woocommerce -> Заказы -> Детали заказа в админке серверной части WordPress? Я буду очень признателен, если у вас есть возможность получить некоторую справочную информацию об этих крючках. Спасибо


person Alexandre Deplancke    schedule 30.04.2019    source источник


Ответы (1)


Вам необходимо использовать составной фильтр, созданный из WC_Order_Item get_name() метод вроде:

add_filter( 'woocommerce_order_item_get_name', 'filter_order_item_get_name', 10, 2 );
function filter_order_item_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;
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

person LoicTheAztec    schedule 30.04.2019
comment
Как обычно, ваш ответ идеален. Большое тебе спасибо. Я не понимаю, в чем разница между крючком фильтра и крючком составного фильтра. Думаю, мне стоит прочесть статьи об этом. - person Alexandre Deplancke; 30.04.2019
comment
Последний вопрос: а как насчет артикула в доставке? sku in товар для доставки Это код add_filter( 'woocommerce_order_shipping_item_get_name', 'filter_order_shipping_item_get_name', 10, 2 ); function filter_order_shipping_item_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; } - person Alexandre Deplancke; 30.04.2019
comment
@AlexandreDeplancke Извините, я не понимаю ... Если у вас есть еще вопрос, задайте новый вопрос, пожалуйста. - person LoicTheAztec; 30.04.2019