如何将数组选项保存为文本而不是整数?

时间:2016-12-26 作者:Calvin Seng

Im正在定制WooCommerce签出,添加了一个下拉字段,可以获取用户的元键,并在签出页面中显示为选择选项。我还设法在签出后将所选选项保存到订单中。但是,该选项在自定义字段中显示为整数,而不是文本。

以下代码是我的发展,希望有人能指导我。dropdown

Custom Field Value

检索用户元键并显示为下拉选项

add_action(\'woocommerce_after_order_notes\', \'wps_add_select_checkout_field\');
function wps_add_select_checkout_field( $checkout ) {

    $user_id = get_current_user_id(); 
    $vessel_one = get_user_meta( $user_id, \'vessel_one\', true ); 
    $vessel_two = get_user_meta( $user_id, \'vessel_two\', true ); 
    $vessel_three = get_user_meta( $user_id, \'vessel_three\', true ); 
    $vessel_four = get_user_meta( $user_id, \'vessel_four\', true ); 
    $vessel_five = get_user_meta( $user_id, \'vessel_five\', true );  

    woocommerce_form_field( \'order_vessel\', array(
        \'type\'          => \'select\',
        \'class\'         => array( \'wps-drop\' ),
        \'label\'         => __( \'Select a Vessel\' ),
        \'options\'       => array( $vessel_one, $vessel_two, $vessel_three, $vessel_four, $vessel_five )
 ),
    $checkout->get_value( \'order_vessel\' ));
}
将值保存到订单上的自定义字段中

add_action(\'woocommerce_checkout_update_order_meta\', \'wps_select_checkout_field_update_order_meta\');
 function wps_select_checkout_field_update_order_meta( $order_id ) {
   if ($_POST[\'order_vessel\']) update_post_meta( $order_id, \'order_vessel\', esc_attr($_POST[\'order_vessel\']));
 }
我希望有人能告诉我如何保存值,而不是将其转换为整数。提前非常感谢您。

2 个回复
最合适的回答,由SO网友:Jami Gibbs 整理而成

你的options 如果希望返回键号以外的内容,则应具有键=>值结构:

\'options\'     => array(
    \'option_a\' => __(\'option a\', \'woocommerce\' ),
    \'option_b\' => __(\'option b\', \'woocommerce\' )
    )
);

SO网友:Calvin Seng

谢谢大家!问题解决了。

\'options\'       => array(     
                 $vessel_one => __($vessel_one, \'woocommerce\' ),
                 $vessel_two => __($vessel_two, \'woocommerce\' ),
                 $vessel_three => __($vessel_three, \'woocommerce\' ),
                 $vessel_four => __($vessel_four, \'woocommerce\' ),
                 $vessel_five => __($vessel_five, \'woocommerce\' )
                )
这样,它将在自定义字段中自动显示用户自定义元中的选定值。

相关推荐

Foreach循环内的if/ellif in_array仅显示一个POST的问题

如果某个类别的帖子对应一个类别,我会尝试为每个帖子指定一个特定的背景色。我的函数可以工作,但仅限于在结果中显示一篇文章。如果我删除此功能,将显示所有帖子。更多信息:在我的页面上,我有按类别筛选帖子的按钮。如果单击一次,我将显示该类别的所有帖子。但每个帖子都包含几个类别。我选择了一些类别来为每个帖子设置背景色,但这些类别与过滤器按钮不同。Wordpress显示此错误;您的站点出现严重错误,请了解有关调试WordPress的详细信息"E;在显示第一个帖子之后。以下是我的全部代码:<?php&#x