【问题标题】:How to add a select custom field to checkout page in WooCommerce?如何在 WooCommerce 中将选择自定义字段添加到结帐页面?
【发布时间】:2012-09-19 10:33:42
【问题描述】:

我正在向 WooCommerce 的结帐页面添加额外的字段, 我已经添加了基本的文本字段,但是我想要一个带有一些选项的下拉菜单或选择框, 这是我到目前为止所做的,但我在某处犯了错误

$fields['billing']['billing_meat'] = array(
    'label'     => __('Food options', 'woocommerce'),
'placeholder'   => _x('', 'placeholder', 'woocommerce'),
'required'  => false,
'clear'     => false
'type'  => 'select',

'options' => array(                     // array of key => value pairs for select options
            __('I eat meat', 'woocommerce') => __('I eat mate', 'woocommerce'),
            __('meat is gross', 'woocommerce') => __('meat is gross', 'woocommerce'),

也许我没有正确定义“类型”字段?

感谢负载

【问题讨论】:

    标签: woocommerce


    【解决方案1】:

    如果那是您的确切代码,那么问题是您在 'clear' => false 之后缺少一个逗号。

    我已经测试过了,它可以工作:

    $fields['billing']['billing_meat'] = array(
        'label'       => __('Food options', 'woocommerce'),
        'placeholder' => _x('', 'placeholder', 'woocommerce'),
        'required'    => false,
        'clear'       => false,
        'type'        => 'select',
        'options'     => array(
            'eat-meat' => __('I eat maet', 'woocommerce' ),
            'not-meat' => __('Meat is gross', 'woocommerce' )
            )
        );
    

    请注意,我也没有在选项数组键上使用__()。最好不要翻译这些。

    【讨论】:

      【解决方案2】:

      这是有效的。这是我的代码

      // Hook in
      add_filter( 'woocommerce_checkout_fields' , 'dropdown' );
      
      // Our hooked in function - $fields is passed via the filter!
      function dropdown( $fields ) {
           $fields['billing']['dropdown'] = array(
              'label'     => __('dropdown', 'woocommerce'),
          'placeholder'   => _x('dropdown', 'placeholder', 'woocommerce'),
          'required'  => false,
          'class'     => array('form-row-wide'),
          'clear'     => true,
          'type'      => 'select',
           'options'     => array(
              'option 1' => __('option 1', 'woocommerce' ),
              'option 2' => __('option 2', 'woocommerce' )
              )//end of options
           );
      
           return $fields;
      }
      

      这行得通。但似乎该值没有保存在_billing_dropdown 下。我使用“管理列”插件在订单表(管理端)中添加一个字段。在我的自定义字段“下拉菜单”下,没有显示任何值。我在哪里可以检索值?我的另一个自定义字段“目的”也是如此,它位于“_billing_purpose”下并且是 type=>'textarea'。谢谢!

      这是截图 https://scontent-b-hkg.xx.fbcdn.net/hphotos-xpf1/v/t1.0-9/10696182_985415141473105_5302358697439449940_n.jpg?oh=74cb5ebc6b1ad6dd0c29e51293b61fdf&oe=5502613C

      【讨论】:

      • 我知道这是一个旧线程,但由于您似乎没有得到您正在寻找的答案,您需要使用字段值更新订单元数据。下面是如何做到这一点: /** * 使用字段值更新订单元 */ add_action( 'woocommerce_checkout_update_order_meta', 'dropdown_update_order_meta' ); function dropdown_update_order_meta( $order_id ) { if ( !empty( $_POST['dropdown'] ) ) { update_post_meta( $order_id, '你是如何找到我们的', sanitize_text_field( $_POST['dropdown'] ) ); } }
      猜你喜欢
      • 1970-01-01
      • 2021-05-30
      • 2021-04-30
      • 2017-03-21
      • 2021-08-03
      • 2019-04-01
      • 1970-01-01
      • 2017-09-17
      • 2022-01-03
      相关资源
      最近更新 更多