Как добавить метаданные в элемент Woocommerce, чтобы он отображался в разделе заказов? - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь внести метаданные в «элементы» заказов WoCommerce.

В конкретных терминах я сначала создал текстовый ввод на «вкладке« Общие »продукта, и цель состоит в том, чтобы показать, что я пишу в этом поле в таблице woocommerce "мой заказ".

Мне удалось создать фрагмент, который добавляет столбцы в таблицу "мой заказ" и заполняет эти поля метаданными элемента ( с order->get_item, а затем с get_meta, например, названием продукта). Проблема в том, что мое поле (созданное мной в продукте) не отображается в метаданных "предметов" заказа.

Я все еще не очень хорошо разбираюсь в PHP, и код, который я создал, представляет собой вырезку из других фрагментов, найденных на net.

Заранее спасибо.

/**
 * Display the custom text field
 * @since 1.0.0
 */
function cfwc_create_custom_field() {
    $args = array(
        'id'            => 'jjj',
        'label'         => __( 'inserire data del venerdì', 'cfwc' ),
        'class'                 => 'cfwc-custom-field',
        'desc_tip'      => true,
        'description'   => __( 'Enter the title of your custom text field.', 'ctwc' ),
    );
    woocommerce_wp_text_input( $args );
}
add_action( 'woocommerce_product_options_general_product_data', 'cfwc_create_custom_field' );

/**
 * Save the custom field
 * @since 1.0.0
 */
function cfwc_save_custom_field( $post_id ) {
    $product = wc_get_product( $post_id );
    $title = isset( $_POST['jjj'] ) ? $_POST['jjj'] : '';
    $product->update_meta_data( 'jjj', sanitize_text_field( $title ) );
    $product->save();
}
add_action( 'woocommerce_process_product_meta', 'cfwc_save_custom_field' );

//-------------------------------------------------------------------------------------------------------------------------
 add_filter( 'woocommerce_before_add_to_cart_button', 'woo_display_variation_dropdown_on_shop_page' );

 function woo_display_variation_dropdown_on_shop_page() {

    global $product;

    $attribute_keys = array_keys( $product->get_meta_data( 'jjj' ) );

 }
//-------------------------------------------------------------------------------------------------------------------------

/**
 * Add 'jjj' to cart item.
 *
 * @param array $cart_item_data
 * @param int   $product_id
 * @param int   $variation_id
 *
 * @return array
 */
function iconic_add_jjj_to_cart_item( $cart_item_data, $product_id, $variation_id ) {
    $engraving_text = filter_input( INPUT_POST, 'jjj' );



    $cart_item_data['jjj'] = $engraving_text;

    return $cart_item_data;
}

add_filter( 'woocommerce_add_cart_item_data', 'iconic_add_jjj_to_cart_item', 10, 3 );

//-------------------------------------------------------------------------------------------------------------------------

function adding_custom_data_in_order_items_meta( $item_id, $values, $cart_item_key ) {
    if ( isset($values['jjj'])) {
        $the_meta = $values['jjj'];
        wc_add_order_item_meta($item_id, 'pa-the-meta', $the_meta );
    }
}
add_action('woocommerce_add_order_item_meta','adding_custom_data_in_order_items_meta', 10, 3 );

//-------------------------------------------------------------------------------------------------------------------------

/**
 * Display jjj in the cart.
 *
 * @param array $item_data
 * @param array $cart_item
 *
 * @return array
 */
function iconic_display_engraving_text_cart( $item_data, $cart_item ) {


    $item_data[] = array(
        'key'     => __( 'provola', 'default' ),
        'value'   => wc_clean( $cart_item['jjj'] ),
        'display' => '',
    );

    return $item_data;
}

add_filter( 'woocommerce_get_item_data', 'iconic_display_engraving_text_cart', 10, 2 );

//-------------------------------------------------------------------------------------------------------------------------

/**
 * Add engraving text to order.
 *
 * @param WC_Order_Item_Product $item
 * @param string                $cart_item_key
 * @param array                 $values
 * @param WC_Order              $order
 */
add_action( 'woocommerce_checkout_create_order_line_item', 'iconic_add_engraving_text_to_order_items', 10, 4 );

function iconic_add_engraving_text_to_order_items( $item, $cart_item_key, $values, $order ) {



    $item->add_meta_data( __( 'provola', 'default' ), $values['jjj'] );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...