woocommerce_form_field和隐藏字段(woocommerce_form_field

2019-06-27 00:18发布

我想自定义字段添加到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