【问题标题】:WordPress add field to checkout, can't add user meta to valueWordPress将字段添加到结帐,无法将用户元添加到值
【发布时间】:2018-10-25 23:11:07
【问题描述】:

我正在尝试向 woocommerce 结帐添加一个额外的表单字段,并使用现有的用户元值(如果存在)填充它,但我似乎无法获取要呈现的 value 属性。

$user_meta_billing_licence_number 跟踪到错误日志,如果我将它附加到标签,它将显示在标签中,如果我将它附加到占位符而不是 value 属性,它将显示在占位符中。我做错了什么?

add_filter('woocommerce_billing_fields', 'custom_billing_fields', 20 );
function custom_billing_fields( $fields ) {
    // Add license field.
    $user_id = get_current_user_id();
    $user_meta_billing_licence_number = (string)get_user_meta( $user_id, 'billing_licence_number', true );
    error_log('debug: line 117: billing_licence_number = '.$user_meta_billing_licence_number);
    $fields['billing_licence_number'] = array(
        'label'     => __('License Number (for use on certificates)', 'woocommerce'),
        'required'  => false,
        'class'     => array('form-row-wide'),
        'clear'     => true,
        'placeholder' => 'Recommended format: MA12345'.$user_meta_billing_licence_number,
        'value'     => $user_meta_billing_licence_number
    );
    return $fields;
}

【问题讨论】:

    标签: wordpress woocommerce


    【解决方案1】:

    所以...看起来您无法通过此过滤器传递值。您必须稍后拦截它,并覆盖在打印字段期间获取的值:

    <?php foreach ( $checkout->checkout_fields['billing'] as $key => $field ) : ?>
    
        <?php
    
            if($key == 'billing_licence_number') {
                $uID = get_current_user_id();
                woocommerce_form_field( $key, $field, get_user_meta($uID, 'billing_licence_number', true));
            } else {
                woocommerce_form_field( $key, $field, $checkout->get_value( $key ) );
            }
    
        ?>
    
    <?php endforeach; ?>
    

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 2016-07-28
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      相关资源
      最近更新 更多