Выведите значение настраиваемого поля в отдельных страницах продукта и корзины WooCommerce

Мне нужна помощь, чтобы добавить пользовательские данные в переднюю часть продукта так же, как это:

См. Изображение

Это изображение является образцом, если PD # i просто добавить, и я хочу, чтобы он добавлялся в переднем конце продукта:

См. Изображение

Просто добавив настраиваемое поле на вкладке общих настроек страниц продукта WooCommerce, с помощью: Как добавить пользовательские поля в Woocommerce 3.1, спасибо @Ankur Bhadania.

благодаря

Для простых продуктов пользовательское поле '_pd_number' вашего продукта в простых страницах продукта перед добавлением в корзину, используя woocommerce_before_add_to_cart_button действие:

 add_action( 'woocommerce_before_add_to_cart_button', 'add_cf_before_addtocart_in_single_products', 1, 0 ); function add_cf_before_addtocart_in_single_products() { global $product; $pd_number = get_post_meta( $product->get_id(), '_pd_number', true ); if( !empty( $pd_number ) ) echo '<div class="pd-number">PD # '. $pd_number .'</div><br>'; } 

Код идет в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

введите описание изображения здесь

Этот код тестируется на WooCommerce версии 3+ и работает.


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

 // Displaying the product custom field in the Cart items add_filter( 'woocommerce_cart_item_name', 'add_cf_after_cart_item_name', 10, 3 ); function add_cf_after_cart_item_name( $name_html, $cart_item, $cart_item_key ) { $product_id = $cart_item['product_id']; if( $cart_item['variation_id'] > 0 ) $product_id = $cart_item['variation_id']; $pd_number = get_post_meta( $product_id, '_pd_number', true );; if( !empty( $pd_number ) ) $name_html .= '<br><span class="pd-number">PD # '.$pd_number .'</span>'; return $name_html; } 

Код идет в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

Этот код тестируется на WooCommerce версии 3+ и работает.

введите описание изображения здесь


Здесь код, который я использовал, он предоставил ссылку в комментариях только для тестирования:

 // Display Product settings Fields add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' ); function woo_add_custom_general_fields() { woocommerce_wp_text_input( array( 'id' => '_pd_number', 'label' => __( 'PD Number', 'woocommerce' ), 'placeholder' => 'PD# XXXXXX', 'desc_tip' => 'true', 'description' => __( 'Enter the PD Number of Product', 'woocommerce' ) )); } // Save Product settings Fields add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' ); function woo_add_custom_general_fields_save( $post_id ){ $pd_number = $_POST['_pd_number']; if( !empty( $pd_number ) ) update_post_meta( $post_id, '_pd_number', esc_attr( $pd_number ) ); } 

Связанный ответ: переопределить URL внешнего продукта на кнопку «Добавить в корзину»

Для отображения пользовательского продукта meta на странице продукта продукта используется 2 крючка. использовал любой из них согласно вашему требованию.

1) показ перед продуктом WooCommerce. Использованный woocommerce_product_meta_start

 add_action( 'woocommerce_product_meta_start', 'woo_add_custom_general_fields_extra_info' ); function woo_add_custom_general_fields_extra_info() { global $woocommerce, $post; echo "PD # ".get_post_meta( $post->ID, '_text_field', true ); } 

2) отображение после использования продукта WooCommerce. Использованный woocommerce_product_meta_end

 add_action( 'woocommerce_product_meta_end', 'woo_add_custom_general_fields_extra_info' ); function woo_add_custom_general_fields_extra_info() { global $woocommerce, $post; echo "PD # ".get_post_meta( $post->ID, '_text_field', true ); }