php - 联系表格 7 提交后更改用户角色
问题描述
好的,我一直在尝试做以下事情:
如果当前用户角色是 SUBSCRIBER 并且联系表单 id "1234" 已成功提交,则将用户角色更改为 EDITOR。
这是我到目前为止所做的,但我不知道为什么它不起作用。
add_action( 'wpcf7_mail_sent', 'changerole_wpcf7' );
function changerole_wpcf7( $contact_form ) {
$user = wp_get_current_user();
if ( ! empty( $user ) && in_array( "subscriber", (array) $user->roles ) && $contact_form->id() !== 1234 )
return;
$user->remove_role( "subscriber" );
$user->add_role( "editor" );
}
解决方案
好吧,伙计们,我终于成功了。我对@rank 代码做了一些小改动,并添加subscribers_only: true
到了联系表 7 中的“其他设置”选项卡中。
add_action( 'wpcf7_mail_sent', 'changerole_wpcf7' );
function changerole_wpcf7( $cf7 ) {
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
$user_id = $user->ID;
$user_meta = get_userdata($user_id);
$user_roles = $user_meta->roles;
$submission = WPCF7_Submission::get_instance();
if ( $cf7->id() == 1234 ) {
if($submission) {
if ( in_array( 'subscriber', $user_roles ) ) {
wp_update_user( array( 'ID' => $user_id, 'role' => 'editor' ) );
}
}
} else { return; }
}
}
推荐阅读
- javascript - 在 Promise() 中使用 while 循环
- jersey - 使用 Jersey 构建 REST 服务
- android - 为什么用滑行对图像进行圆角会增加我的 ram 使用量?
- google-photos - Google 照片 API 中的照片 ID
- ios - 无法更改 CNContactViewController forNewContact 中的个人资料图片,当联系人已存在于电话联系人中时
- filtering - DAX:在单个列中返回有关两个(或更多)匹配项的信息
- python - 如何在 Keras Python 中合并多个顺序模型?
- java - 尝试连接到远程 MySQL 数据库时出现 PakcetTooBigException
- android - 设备方向更改时 Twitter 登录回调失败
- postgresql - 将查询的部分内容与 trigram 索引匹配