Php WooCommerce-提交后检索选择框的正确数据值

Php WooCommerce-提交后检索选择框的正确数据值,php,arrays,wordpress,woocommerce,html-select,Php,Arrays,Wordpress,Woocommerce,Html Select,我正在使用Woocommerce,我在管理面板中创建了一个选择框。我通过平面文件填充选择框中的信息。 一切正常(几乎正常) 我被卡住的部分是在我选择了我想要的“选择”和保存之后,我得到的是数组$key位置,而不是实际的$value。我离得很近,但我就是摸不着 更新:以下是我的完整代码: function woo_add_custom_admin_product_tab() { ?> <li class="custom_tab"><a href="#custom_t

我正在使用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.', 'woocommerce' ),
        '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' );
生成的数组如下所示:

数组(
[0]=>请选择一个品种。。。
[1] =>阿比西尼亚
[2] =>Affenpinscher
)
因此,例如,当我选择
“Affenpinscher”
时,我得到的是值
“2”
,而不是
“Affenpinscher”

我做错了什么?我如何解决这个问题

谢谢

-更新-(已测试并正常工作)

这绝对是下拉选择器的正常行为。您只需要在代码中添加一些小东西,以使其以不同的方式工作

更改为
-首先,当外部文本文件中的值数组可用时,我将其存储在wordpress选项中
-第二,在最后一个保存函数中,我使用从
$\u POST[''u select\u break\u key1']获得的所选
键获取存储的数组,检索存储在新条目中的对应值(wp_PosteTa表中的新行)


你的数组与一个平面文件无关,考虑重命名这个问题。非常感谢Loic!看起来我正朝着正确的方向前进,我需要得到[价值]。数组的。不幸的是,它没有像我期望的那样工作。当我单击“更新”时,值没有保存到数据库中。仅供参考,我也在使用函数来完成此操作,以下是我的完整代码:呜呜呜!它工作了!我只需做一个更正…在//选择字段-品种部分,我只需更新:如果(!empty($woocommerce_select))是如果(!empty($wc_select)),但是它起作用了!我仍然需要学习数组和选择框的特征。但是谢谢,它起作用了…我想我下一步将尝试从数据库中提取!哦,是的,对不起…重命名时忘记了这个。已更新。
//Create the fields
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);

        //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',
        'label'   => __( 'Select Primary Breed', 'woocommerce' ),
        'desc_tip'    => 'true',
        'description' => __( 'Select the primary breed of the pet.', 'woocommerce' ),
        '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, '_select_breed_value1', true );
echo $breed_value1;

?>