微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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>的正常行为.您只需在代码添加一些小东西,使其以不同的方式工作.

The changes are:
— first,when the array of values from the external text file is available,I store it in wordpress options.
— Second,In the last saving function,I get the stored array and with the selected key that I get from $_POST['_select_breed_key1'];,I retrieve the corresponding value that I store in a new entry (new row in wp_postMeta table.

//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' );

You have Now in in wp_postMeta table for a Product ID (post_id),2 Meta_keys:
'_select_breed_key1' that stores the selected key
'_select_breed_value1' that stores the corresponding value

用法例如(获取此值):

<?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;

?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐