我正在尝试向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;
}
}
感谢所有帮助。
答案 0 :(得分:6)
实际上。 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;
}
这对我有用。
答案 1 :(得分: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 );
}
答案 2 :(得分:-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" />';
}
答案 3 :(得分:-1)
添加过滤器时必须传递参数..类似
add_filter函数中的第三个参数是过滤器接收的参数数量。
最后一个参数是优先级......
add_filter('woocommerce_form_field_hidden', 'my_form_field_hidden', 4 , 15);
现在你必须在过滤器功能中设置参数。
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;
}
}
我希望它有所帮助