2016-10-24 84 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

相關問題