gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 23:37:35 25 4
gpt4 key购买 nike

我正在使用 Woocommerce,并且在管理面板中构建了一个选择框。我通过平面文件在选择框中填充信息。一切正常(几乎)。

我坚持的部分是在我选择我想要的“选择”和保存我得到数组 $key 位置而不是实际 $值。我很接近,但我不能把我的手指放在上面。

更新:这是我的完整代码:

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

我的 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, $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' );

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, '_select_breed_value1', true );
echo $breed_value1;

?>

关于php - WooCommerce - 提交后检索选择框的正确数据值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39502403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com