2017-10-28 117 views
0

我使用woocommerce,我編輯的wordpress 的functions.php文件。如何插入如果WordPress的functions.php的聲明文件

我的店裏有兩個結賬頁面,一個前管理員審覈訂單(結帳)和其他管理員批准訂單(最終結賬)之後。

我想從第一個結帳頁面中刪除結算信息,並僅在第二個(最終)結帳頁面中顯示它。

的functions.php頁,我用下面的if語句,但它不工作。我認爲if語句正在針對functions.php頁面進行測試,而不是結帳頁面。

if (is_page('checkout')){ 

     add_filter('woocommerce_checkout_fields' , 'custom_override_checkout_fields'); 

      function custom_override_checkout_fields($fields) { 
       unset($fields['billing']['billing_first_name']); 
       unset($fields['billing']['billing_last_name']); 
       unset($fields['billing']['billing_company']); 
       unset($fields['billing']['billing_address_1']); 

       return $fields; 
      } 

} 

如果有人能幫助我只顯示第二結賬頁面上的計費信息,而不是第一,那將是非常讚賞

THANKS

+1

如果你在你的函數中使用'unset()',這將消除前後的這些字段,因爲客戶將無法輸入任何數據。你的條件應該在函數內部,而不是在外部...對於正常的結賬頁面,你應該使用'if(is_checkout()){'better than'if(is_page('checkout')){'...但是記住'woocommerce_checkout_fields 'hook只在結賬頁面上工作,所以如果你使用它,你不需要條件函數... – LoicTheAztec

+0

沒有任何分離文件的最終結帳頁面?像final-checkout.php? –

回答

0

之前,你不能調用is_page()全局WP_Query實例$ wp_query被構造。您的functions.php包含在$ wp_query構建之前。爲了解決使用

add_action('parse_request', function() { 
    # At this point $wp_query has been constructed and you can call is_page() 
}); 
0

這個問題,你需要$ wp_query對象被創建後,安排你的代碼後運行,你可以請把IF條件函數內部,然後再試一次?

add_filter('woocommerce_checkout_fields' , 'custom_override_checkout_fields'); 

    function custom_override_checkout_fields($fields) { 
     if (is_page('checkout')){ 
      unset($fields['billing']['billing_first_name']); 
      unset($fields['billing']['billing_last_name']); 
      unset($fields['billing']['billing_company']); 
      unset($fields['billing']['billing_address_1']); 

      return $fields; 
     } 
    }