2016-10-24 57 views
0

您好我有一个问题,关于woocommerce中的自定义结账字段。 我在结帐表单中创建了一个自定义字段,并且所有工作都非常完美。该字段包含客户卡号。我还设法在wp-usermeta中保存了字段值(一旦输入第一次),这样它就不会只与订单一起出现,而是与客户的详细信息一起保存。管理woocommerce中的自定义结账字段

现在我想做以下事情。一旦返回店铺的注册顾客转到结账表格,新栏位(如果不是empyt)会自动显示,而不是要求顾客每次都插入他们的卡号。

,我加入到我的子主题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; 
    } 

任何建议?

回答

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; 

}

+0

哦~~伟大的!谢谢@mirzap! –

+0

不客气 – MirzaP

相关问题