我有一个使用自定义结帐表单的插件。在此结帐表单中,有一个“创建帐户”复选框,与默认的Wordpress复选框相同。我正在尝试编写一些代码来添加另一个复选框,允许用户为这个新帐户选择一个角色。创建此结帐表单的插件有一个我想要挂钩的do_action。它甚至还有我需要的变量。可悲的是,我不确定如何使用它。
do_action:
do_action( 'woocommerce_after_checkout_validation', $woocommerce_checkout->posted );
如您所见,这会使用$woocommerce_checkout->posted
我的代码有以下
add_action('woocommerce_after_checkout_validation', 'validate_professional_field' 10,1);
在我的函数中,我尝试使用以下代码:
function validate_professional_field( $woocommerce_checkout->posted ) {}
这不起作用我不知道该怎么做.. 如何使用随动作发送的变量?
最后,我想使用$woocommerce_checkout->posted['createprofessional']
来获取应该是我的复选框值的值。
其他详情
此复选框是使用以下代码制作的:
add_action('woocommerce_before_checkout_registration_form' , 'define_telesales_fields', 3);
<?php function define_telesales_fields() { ?>
<p class="form-row form-row-wide create-professional">
<div class="create-account">
<input class="input-checkbox" id="createprofessional" type="checkbox" name="createprofessional" value="1" />
<label for="createprofessional" class="checkbox"><?php _e( 'Create a professional', 'woocommerce' ); ?></label>
</div>
</p>
<?php }?>
解决
add_action
中缺少逗号 add_action('woocommerce_after_checkout_validation', 'validate_professional_field', 10,1);
答案 0 :(得分:1)
只需在函数声明中使用$woocommerce_checkout
作为参数名称;如果您将整个对象传递给函数,则可以在函数本身中使用$woocommerce_checkout->posted
。
例如:
function validate_professional_field( $woocommerce_checkout ) {
//$woocommerce_checkout->posted is valid here
}
//and you'd call it like this:
validate_professional_field( $woocommerce_checkout );
或者,如果你知道你只想在函数中使用posted
,你可以将参数限制为只是那个,这似乎是你想要做的。在这种情况下,在函数声明中给它一个有效的变量名,如下所示:
function validate_professional_field( $posted ) {
//$posted is valid here, and will be contain the data from $woocommerce_checkout->posted that you're passing into the function.
}
//and you'd call it like this:
validate_professional_field( $woocommerce_checkout->posted );