我想自定义字段添加到WooCommerce结帐,有似乎没有输出隐藏字段。
在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;
}
}
所有帮助表示赞赏。
Answer 1:
其实。 该功能的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;
}
这为我工作。
Answer 2:
我知道它已经一段时间,因为你问到这个问题,但我发现的东西,为我工作。 我能够通过发布某些信息后元绕过一个隐藏字段。
这是我做的:
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' );
}
上面我哪里有“您的期望值,我放置在返回我需要保存的顺序号的功能。
但愿这不是太具体的我自己的应用程序。
Answer 3:
如果你能拉你需要的信息,并把它变成一个变量,你完全可以绕过需要把信息的形式。 只需直接添加信息,以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 );
}
Answer 4:
我不知道你究竟是如何添加其他非隐藏的自定义字段,但你可以只回声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" />';
}
Answer 5:
你当你添加过滤器来传递参数..喜欢的东西
在功能的add_filter第三个参数是参数的数量,过滤器接收。
最后一个参数是优先级...
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;
}
}
我希望它能帮助
文章来源: woocommerce_form_field and hidden fields