2012-08-13 92 views
2

我想自定義字段添加到WooCommerce結帳,有似乎沒有輸出隱藏字段。woocommerce_form_field和隱藏字段

woocommerce-template.php,隱藏字段落入這個開關情況:

default : 
    $field = apply_filters('woocommerce_form_field_' . $args['type'], '', $key, $args, $value ); 
    break; 
} 

我怎麼會去有關添加woocommerce_form_field_hidden動作,其輸出的隱藏字段。我嘗試了多種不起作用的東西。最終,我無法弄清楚如何傳遞函數參數。

add_action('woocommerce_form_field_hidden', 'my_form_field_hidden'); 
if (! function_exists('my_form_field_hidden')) { 
    function hp_form_field_hidden() { 

     $field = '<p class="form-row ' . implode(' ', $args['class']) .'" id="' . $key . '_field"> 
      <input type="hidden" class="input-hidden" name="' . $key . '" id="' . $key . '" placeholder="' . $args['placeholder'] . '" value="'. $value.'" /> 
      </p>' . $after; 

     return $field; 
    } 
} 

所有幫助表示讚賞。

+1

失效鏈接@stevie – 2016-08-17 11:46:16

回答

-1

我不知道你究竟是如何添加其他非隱藏的自定義字段,但是你可以回聲HTML。

添加一個鉤子:

add_action('woocommerce_before_checkout_billing_form', array(&$this, 'custom_before_checkout_billing_form')); 

然後在你自己的函數做這樣的事情:

function custom_before_checkout_billing_form($checkout) { 

    echo '<input type="hidden" class="input-hidden" name="test" id="test" placeholder="test" value="test" />'; 
} 
0

我知道它已經一段時間,因爲你問到這個問題,但我發現了對我有用的東西。我能夠通過發佈某些信息後元繞過一個隱藏字段。

這就是我所做的。

add_action('woocommerce_checkout_update_order_meta', 'your_hidden_data'); 

function your_hidden_data($order_id) { 
    /* 
     Put your normal field saves here 
    */ 

    //Your hidden fields 
    update_post_meta($order_id, 'YOUR DESIRED KEY NAME', 'YOUR DESIRED VALUE'); 
} 

上面我哪裏有「您的期望值,我放置在返回我需要保存的順序數的函數

但願這不是太具體的我自己的應用程序。

-1

你,當你添加過濾器來傳遞參數..喜歡的東西

在add_第三個參數過濾功能是過濾器接收的參數個數。

最後一個參數是優先...

add_filter('woocommerce_form_field_hidden', 'my_form_field_hidden', 4 , 15); 

現在你必須設置paramteres的過濾功能。

if (! function_exists('my_form_field_hidden')) { 

    function hp_form_field_hidden($no_parameter, $key, $args, $value) { 

     $field = '<p class="form-row ' . implode(' ', $args['class']) .'" id="' . $key . '_field"> 
      <input type="hidden" class="input-hidden" name="' . $key . '" id="' . $key . '" placeholder="' . $args['placeholder'] . '" value="'. $value.'" /> 
      </p>' . $after; 

     return $field; 
    } 
} 

我希望它能幫助

5

其實。該功能的add_filter的最後paramatert是參數的函數的數量。

第三個是優先級。

add_filter('woocommerce_form_field_hidden', 'wcds_form_field_hidden', 999, 4); 

function wcds_form_field_hidden($no_parameter, $key, $args, $value) { 

    $field = '<p class="form-row ' . implode(' ', $args['class']) .'" id="' . $key . '_field"> 
     <input type="hidden" class="input-hidden" name="' . $key . '" id="' . $key . '" placeholder="' . $args['placeholder'] . '" value="'. $value.'" /> 
     </p>'; 

    return $field; 
} 

這對我有效。

+0

我也工作了。 – 2017-06-27 11:14:30

+0

請注意,$ after沒有任何價值,並會將PHP通知作爲「未定義變量」進行投放。 – 2017-06-27 14:18:10

+1

@BretWeinraub:謝謝。現在刪除它。 – tormorten 2017-10-19 10:16:33

0

如果您可以將需要的信息提取出來,並將其放入一個變量中,您完全可以繞過將信息放入表單的需要。只需將信息直接添加到update_post_meta即可。

我需要添加存儲在cookie中和原本想將其添加爲隱藏字段的形式,但最終不是做這個的值:

/** 
* Add the hidden referral info field to the checkout 
*/ 
add_action('woocommerce_checkout_update_order_meta', 'your_hidden_data'); 

function your_hidden_data($order_id) { 
/* 
    Put your normal field saves here if needed 
*/ 
$cookie_name1 = $_COOKIE['ref_src']; //Get my Cookie and Assign it 
//Your hidden fields 
update_post_meta($order_id, 'Referral_Source', $cookie_name1); 
}