Php 用于Wordpress/Woocommerce注册后检查表单数据的钩子;添加函数
我所拥有的:Php 用于Wordpress/Woocommerce注册后检查表单数据的钩子;添加函数,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我所拥有的: WooCommerce创建的登录页面 MC4WP(用于Wordpress的Mailchimp)添加了一个复选框 由成员管理的角色插件 我想做的是: 当用户注册时,如果他们选中了复选框,我想为他们分配一个额外的角色。(不要将他们的角色从默认的woocommerce客户更新为其他客户;尝试添加其他角色) 我已成功使用另一个表单分配了多个角色,但没有添加复选框或woocommerce表单的步骤 我试过挂接用户注册、个人资料更新,甚至是woocommerce创建的客户,但到目前为止都没
- WooCommerce创建的登录页面
- MC4WP(用于Wordpress的Mailchimp)添加了一个复选框
- 由成员管理的角色插件
//add_action( 'user_register', 'check_the_form_box_add_role');
//add_action('woocommerce_created_customer', 'check_the_form_box_add_role');
add_action('profile_update', 'check_the_form_box_add_role');
function check_the_form_box_add_role( $user_id ) {
if ( isset($_POST['_mc4wp_subscribe_wp-registration-form']) ) {
$user_id = wp_insert_user( $user_id );
$role_to_add = 'thisistherole;
$user_id->add_role($role_to_add);
}
}
源代码中的表单:
<form method="post" class="register">
<p class="woocommerce-FormRow woocommerce-FormRow--wide form-row form-row-wide">
<label for="reg_email">Email address <span class="required">*</span></label>
<input type="email" class="woocommerce-Input woocommerce-Input--text input-text" name="email" id="reg_email" value=""/>
</p>
<div style="left: -999em; position: absolute;"><label for="trap">Anti-spam</label><input type="text" name="email_2" id="trap" tabindex="-1"/></div>
<input type="hidden" name="_mc4wp_subscribe_wp-registration-form" value="0"/><p class="mc4wp-checkbox mc4wp-checkbox-wp-registration-form"><label><input type="checkbox" name="_mc4wp_subscribe_wp-registration-form" value="1" checked="checked"/><span>This is text for checkbox!</span></label></p>
<p class="woocomerce-FormRow form-row">
<input type="hidden" id="_wpnonce" name="_wpnonce" value="994ca0c618"/><input type="hidden" name="_wp_http_referer" value="/my-account/"/> <input type="submit" class="woocommerce-Button button" name="register" value="Register"/>
</p>
</form>
添加附加角色。如果有人需要,请执行以下操作:
我之前挂接用户注册是正确的。
问题是我没有得到WPUser对象,因此在该对象不可用时调用add_role()。传递id以获取用户数据似乎解决了这个问题
add_action('user_register', 'name_of_function', 10, 1);
function name_of_function( $user_id ) {
if ( isset($_POST['_mc4wp_subscribe_wp-registration-form']) &&
$_POST['_mc4wp_subscribe_wp-registration-form'] == '1')
{
$useridid = get_userdata( $user_id );
$role_to_add = 'thisistherole';
$useridid->add_role($role_to_add);
}
else
{
//do nothing
}
}
有关获取用户数据的更多信息:
和在用户注册上:
add_action('user_register', 'name_of_function', 10, 1);
function name_of_function( $user_id ) {
if ( isset($_POST['_mc4wp_subscribe_wp-registration-form']) &&
$_POST['_mc4wp_subscribe_wp-registration-form'] == '1')
{
$useridid = get_userdata( $user_id );
$role_to_add = 'thisistherole';
$useridid->add_role($role_to_add);
}
else
{
//do nothing
}
}