【发布时间】:2013-10-22 09:47:16
【问题描述】:
我在 Wordpress 中使用了强大的表单,并且有一个注册用户的表单。我可以使用注册表单中的单选按钮来确定他们的角色。我有一个钩子。但是,我需要的是一个挂钩,它将根据表单条目 UPDATE 上的单选选择更改用户角色。我当前的代码仅适用于条目创建。这是在注册时分配角色的代码:
add_filter('frmreg_new_role', 'frmreg_new_role', 10, 2);
function frmreg_new_role($role, $atts){
extract($atts);
if($form->id == 8){
if($_POST['item_meta'][280] == 'Job Applicant')
$role = 'applicant';
}
return $role;
}
"8" 是表单本身的 id。 “280”是单选按钮字段的 ID,其中“求职者”是其中一个值。而“申请人”是我们网站的用户角色之一。
我需要对此进行调整,以便在条目创建后在更新时更改角色。我能找到的最接近的东西是在成功 PayPal 付款后更改用户角色的钩子。我试图将两者结合起来,但我无法让它发挥作用。这是 PayPal 生成的用户角色更改器:
add_action('frm_payment_paypal_ipn', 'change_paid_user_role');
function change_paid_user_role($args){
$new_role = 'contributor'; //change this to the role paid users should have
if(!$args['pay_vars']['completed'])
return; //don't continue if the payment was not completed
if(!$args['entry']->user_id or !is_numeric($args['entry']->user_id))
return; //don't continue if not linked to a user
$user = get_userdata($args['entry']->user_id);
if(!$user)
return; //don't continue if user doesn't exist
$updated_user = (array)$user;
// Get the highest/primary role for this user
$user_roles = $user->roles;
$user_role = array_shift($user_roles);
if ( $user_role == 'administrator' )
return; //make sure we don't downgrade any admins
$updated_user['role'] = $new_role;
wp_update_user($updated_user);
}
更新:根据 Formidable 论坛,动作挂钩可能应该是:frm_after_create_entry。
【问题讨论】:
-
是的,正如我所提到的,我使用的是“强大的表单”。对于那些不熟悉的人来说,应该澄清这是一个插件的名称。道歉。
-
忘了提到强大的论坛说 frmreg_new_role 应该替换为 frm_after_create_entry ,因为我正在尝试做。但我无法让它与它一起工作。
-
哦,他们更改了钩子名称,但没有向后兼容性......他们很好;)
-
关于 my edit 砍掉礼貌,请参阅:Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?。 . .而且,在这里,您通过投票有用的答案来感谢人们:o)
标签: wordpress forms hook user-roles