Отображение пользовательского текста отставания из пользовательского поля в элементах корзины Woocommerce - PullRequest
0 голосов
/ 06 октября 2018

Это связано с: Заменить продукт "в отгрузке" на значение настраиваемого поля в Woocommerce

Я хочу отобразить значение настраиваемого поля продукта _backorder_textв корзине товаров, которые упорядочены.

На основе Пользовательское поле страниц продукта Admin, отображаемое в Корзине и оформлении заказа , Вот код, который у меня есть:

// Render meta on cart and checkout
add_filter( 'woocommerce_get_item_data', 'rendering_meta_field_on_cart_and_checkout', 10, 2 );
function rendering_meta_field_on_cart_and_checkout( $cart_item_data, $cart_item ) {
    if( isset( $cart_item['_backorder_text'] ) ) {
        $cart_item_data[] = array( 
            "name" => __( "Backorders text", "woocommerce" ), 
            "value" => $cart_item['_backorder_text'] 
        );
    }
    return $cart_item_data;
}

Ноэто не работает.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 08 октября 2018

Продолжение: Заменить продукт "в отгрузке" на значение пользовательского поля в Woocommerce

Чтобы отобразить значение пользовательского поля _backorder_text продукта в корзине(и в элементах заказа), которые упорядочены в обратном порядке, используйте следующее:

// Display in cart items backorder text on cart and checkout pages
add_filter('woocommerce_get_item_data', 'display_custom_cart_item_data', 10, 2);
function display_custom_cart_item_data( $cart_item_data, $cart_item ) {
    if( $cart_item['data']->is_on_backorder( $cart_item['quantity'] ) ) {
        $backorder_text = $cart_item['data']->get_meta('_backorder_text');
    }

    if( isset($backorder_text) && ! empty($backorder_text) ) {
        $cart_item_data[] = array(
            'name'  => __("Backordered", "woocommerce"),
            'value' => $backorder_text,
        );
    }

    return $cart_item_data;
}

// Order items: Save "backorder text" as order item meta data and display it everywhere
add_action('woocommerce_checkout_create_order_line_item', 'save_file_type_as_order_item_meta', 20, 4);
function save_file_type_as_order_item_meta($item, $cart_item_key, $values, $order) {
    if( $values['data']->is_on_backorder( $values['quantity'] ) ) {
        $backorder_text = $values['data']->get_meta('_backorder_text');
    }

    if( isset($backorder_text) && ! empty($backorder_text) ) {
        $item->update_meta_data( __("Backordered", "woocommerce"), $backorder_text );
    }
} 

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...