ЧТО Я ПОЛУЧИЛ: Мне нужна помощь в добавлении настраиваемых полей на страницы Product Variations и Simple Product. Я попытался использовать информацию Ремикорсона ( http://www.remicorson.com/woocommerce-custom-fields-for-variations/ ), но я все время получаю сообщение об ошибке. Я пытался дублировать то, что я видел в сообщениях этого пользователя для ISBN, но это не работает для меня.
ПРОБЛЕМА С ЭТОМ КОДОМ: Проблема с приведенным ниже кодом заключается в том, что он не отображается на сайте. Вся помощь очень ценится, я потратил большую часть сегодняшнего дня, пытаясь понять, что я делаю неправильно.
ЧТО Я НАДЕЕТСЯ ПРИСОЕДИНЯТЬСЯ: добавление 6 настраиваемых текстовых полей и 1 флажок для страниц простого продукта и переменных в Woocommerce. Это не поля, которые будут поставляться покупателем (т.е. заполнены), а скорее настраиваемая информация, которую я хочу отображать на страницах своих продуктов (и НЕ на вкладке).
// Display Fields add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' ); // Save Fields add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' ); function woo_add_custom_general_fields() { global $woocommerce, $post; echo '<div class="options_group">'; // Custom fields will be created here... // Text Field woocommerce_wp_text_input( array( 'id' => '_ISBN_field', 'label' => __( 'ISBN', 'woocommerce' ), 'placeholder' => '', 'desc_tip' => 'true', 'description' => __( 'ISBN.', 'woocommerce' ) ) ); function woo_add_custom_general_fields_save( $post_id ){ // Customer text ISBN Field $woocommerce_text_field = $_POST['_ISBN_field']; if( !empty( $woocommerce_text_field ) ) update_post_meta( $post_id, '_ISBN_field', esc_attr( $woocommerce_text_field ) ); else update_post_meta( $post_id, '_ISBN_field', '' ); } // Display Custom Field Value echo get_post_meta( $post->ID, '_ISBN_field', true ); } /* WooCommerce */ /* ----------------------------------------------------------------------------------- */ /* Start WooThemes Functions - Please refrain from editing this section */ /* ----------------------------------------------------------------------------------- */
Мне никогда не нужно было беспокоиться о woocommerce_product_after_variable_attributes_js
, вам просто нужно добавить вход, а затем woocommerce_product_after_variable_attributes_js
его сохранение.
Другая вещь, которая изменилась с момента публикации статьи Реми, заключается в том, что метаданные изменения WooCommerce больше не печатаются в элементе <Table>
… и теперь являются элементами <div>
. Это важно для того, как вы структурируете свой новый контент.
Вот как вы добавили мета-поле в вариацию:
// regular variable products add_action( 'woocommerce_product_after_variable_attributes', 'add_to_variations_metabox', 10, 3 ); add_action( 'woocommerce_save_product_variation', 'save_product_variation', 20, 2 ); /* * Add new inputs to each variation * * @param string $loop * @param array $variation_data * @return print HTML */ function add_to_variations_metabox( $loop, $variation_data, $variation ){ $custom = get_post_meta( $variation->ID, '_custom', true ); ?> <div class="variable_custom_field"> <p class="form-row form-row-first"> <label><?php echo __( 'Custom Data:', 'plugin_textdomain' ); ?></label> <input type="text" size="5" name="variation_custom_data[<?php echo $loop; ?>]" value="<?php echo esc_attr( $custom ); ?>" /> </p> </div> <?php } /* * Save extra meta info for variable products * * @param int $variation_id * @param int $i * return void */ function save_product_variation( $variation_id, $i ){ // save custom data if ( isset( $_POST['variation_custom_data'][$i] ) ) { // sanitize data in way that makes sense for your data type $custom_data = ( trim( $_POST['variation_custom_data'][$i] ) === '' ) ? '' : sanitize_title( $_POST['variation_custom_data'][$i] ); update_post_meta( $variation_id, '_custom', $custom_data ); } }