php – WooCommerce – 提交后检索选择框的正确数据值
我正在使用Woocommerce,我在管理面板中构建了一个选择框.我通过平面文件填充选择框中的信息.
一切都很好(几乎). 我坚持的部分是在我选择了我想要的“选择”并且保存后我得到了数组$key位置而不是实际的$value.我很近但我不能把手指放在上面. 更新:这是我的完整代码: function woo_add_custom_admin_product_tab() { ?> <li class="custom_tab"><a href="#custom_tab_data"><?php _e('Additional Information','woocommerce'); ?></a></li> <?php } add_action( 'woocommerce_product_write_panel_tabs','woo_add_custom_admin_product_tab' ); function woo_add_custom_admin_fields() { global $woocommerce,$post; echo '<div id="custom_tab_data" class="panel woocommerce_options_panel">'; echo '<div class="options_group">'; // Select - Breed1 if (file_exists ( plugin_dir_path(__FILE__) .'breed.txt')) { $breedData = file_get_contents ( plugin_dir_path(__FILE__) .'breed.txt'); $breedArray = explode ("n",$breedData); } woocommerce_wp_select(array( 'id' => '_select_breed1','label' => __( 'Select Primary Breed','woocommerce' ),'desc_tip' => 'true','description' => __( 'Select the primary breed of the pet.','options' => $breedArray ) ); echo '</div>'; echo '</div>'; } add_action( 'woocommerce_product_write_panels','woo_add_custom_admin_fields' ); // Save Fields; function woo_add_custom_general_fields_save( $post_id ){ // Text Field - Pet Name $woocommerce_text_field = $_POST['_pet_name']; if( !empty( $woocommerce_text_field ) ) update_post_meta( $post_id,'_pet_name',esc_attr( $woocommerce_text_field ) ); // Select Field - Breed $woocommerce_select = $_POST['_select_breed1']; if( !empty( $woocommerce_select ) ) update_post_meta( $post_id,'_select_breed1',esc_attr( $woocommerce_select ) ); } add_action( 'woocommerce_process_product_meta','woo_add_custom_general_fields_save' ); 我的breed.txt文件包含3行(项): Please Select a breed... Abyssinian Affenpinscher 生成的数组如下所示: Array ( [0] => Please Select a breed... [1] => Abyssinian [2] => Affenpinscher ) 因此,当我选择“Affenpinscher”时,我得到的值是“2”而不是“Affenpinscher”. 我做错了什么?我该如何解决这个问题? 谢谢 解决方法
– 更新 – (测试和工作)
这绝对是下拉选择器< select>的正常行为.您只需在代码中添加一些小东西,使其以不同的方式工作.
//Create the fields function woo_add_custom_admin_fields() { global $woocommerce,$breedData); //Storing the array in wp_options table if( get_option( 'wc_product_add_info_tab' ) ) update_option( 'wc_product_add_info_tab',$breedArray ); else add_option( 'wc_product_add_info_tab',$breedArray ); } woocommerce_wp_select( array( 'id' => '_select_breed_key1','options' => $breedArray ) ); echo '</div>'; echo '</div>'; } add_action( 'woocommerce_product_write_panels','woo_add_custom_admin_fields' ); // Save Created Fields; function woo_add_custom_general_fields_save( $post_id ){ // Select Field - Breed $wc_select = $_POST['_select_breed_key1']; if( !empty( $wc_select ) ) update_post_meta( $post_id,'_select_breed_key1',esc_attr( $wc_select ) ); // Saving the corresponding value (from "$wc_select" selected key) to database if(get_option('wc_product_add_info_tab')) { // Getting the array $breed_arr = get_option('wc_product_add_info_tab'); // Saving the corresponding value update_post_meta( $post_id,'_select_breed_value1',$breed_arr[$wc_select] ); } } add_action( 'woocommerce_process_product_meta','woo_add_custom_general_fields_save' );
用法例如(获取此值): <?php // Third parameter is set to "true" as it is a string (Not an array) $breed_value1 = get_post_meta( $post_id,true ); echo $breed_value1; ?> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |