【问题标题】:Manage custom checkout fields in woocommerce管理 woocommerce 中的自定义结帐字段
【发布时间】:2016-10-24 14:03:23
【问题描述】:

您好,我对 woocommerce 中的自定义结帐字段有疑问。 我在结帐表单中创建了一个自定义字段,一切正常。该字段包含客户卡号。我还设法将字段值(第一次输入后)保存在 wp-usermeta 中,这样它不仅与订单一起出现,而且与客户详细信息一起保存。

现在我想做以下事情。一旦返回商店的注册客户进入结帐表格,新字段(如果不是空的)会自动显示,而不是每次都要求客户输入他们的卡号。

我添加到我的子主题 fucntions.php 以在结帐页面中显示自定义字段的原始函数是:

  /**
 * Add the field to the checkout
 */
add_action ('woocommerce_after_order_notes', 'checkout_w55_card_number' );

  function checkout_w55_card_number( $checkout ) {

      echo '<div id="checkout_w55_card_number"><h2>' . __('N. tessera W55') . '</h2>';

      woocommerce_form_field( 'w55_card_number', array(
          'type'          => 'text',
          'class'         => array('w55-card-number-class form-row-wide'),
          'label'         => __('Inserisci n. tessera W55'),
          'placeholder'   => __('Inserisci numero'),
          ), $checkout->get_value( 'w55_card_number' ));
      echo '</div>';
}

我因此尝试以这种方式重新安排它,但它不起作用

add_action ('woocommerce_after_order_notes', 'checkout_w55_card_number' );

function checkout_w55_card_number( $checkout ) {
//extracts the value of the w55_card_number field
$w55_card = get_user_meta($user_id, 'w55_card_number', true);
//condition is the w55_card_number field is empty or not 
if ( !empty($w55_card) ) : echo $w55_card;      else :

          echo '<div id="checkout_w55_card_number"><h2>' . __('N. tessera W55') . '</h2>';

          woocommerce_form_field( 'w55_card_number', array(
              'type'          => 'text',
              'class'         => array('w55-card-number-class form-row-wide'),
              'label'         => __('Inserisci n. tessera W55'),
              'placeholder'   => __('Inserisci numero'),
              ), $checkout->get_value( 'w55_card_number' ));
          echo '</div>';
         endif;
   }

有什么建议吗?

【问题讨论】:

    标签: woocommerce customization checkout


    【解决方案1】:

    您的 user_id 变量未定义。您需要执行以下操作:

    add_action ('woocommerce_after_order_notes', 'checkout_w55_card_number' );
    
    function checkout_w55_card_number( $checkout ) {
        $user_id = get_current_user_id();
        $w55_card = '';
        if ($user_id) {
             //extracts the value of the w55_card_number field
             $w55_card = get_user_meta($user_id, 'w55_card_number', true);
        }
        //condition is the w55_card_number field is empty or not 
        if ( !empty($w55_card) ) : echo $w55_card;      
        else :
          echo '<div id="checkout_w55_card_number"><h2>' . __('N. tessera W55') . '</h2>';
          woocommerce_form_field( 'w55_card_number', array(
              'type'          => 'text',
              'class'         => array('w55-card-number-class form-row-wide'),
              'label'         => __('Inserisci n. tessera W55'),
              'placeholder'   => __('Inserisci numero'),
              ), $checkout->get_value( 'w55_card_number' ));
          echo '</div>';
         endif;
    

    }

    【讨论】:

    • 哦,太棒了!谢谢@mirzap!
    猜你喜欢
    • 2023-03-27
    • 2023-04-10
    • 2017-06-19
    • 2017-03-21
    • 2013-07-07
    • 2015-12-16
    • 1970-01-01
    • 2015-04-20
    相关资源
    最近更新 更多