首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Wordpress最终成员插件-将用户状态设置为等待管理员批准

Wordpress最终成员插件-将用户状态设置为等待管理员批准
EN

Stack Overflow用户
提问于 2016-05-15 05:52:49
回答 2查看 5.1K关注 0票数 2

Wordpress最终成员(UM)插件允许我们通过wp-admin将新注册的用户设置为“未决”。

挂起的函数有两件事:

  • 将用户状态设置为“等待管理审批”
  • 向用户发送电子邮件

见这里:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function pending(){ 
global $ultimatemember; 
$this->set_status('awaiting_admin_review'); 
$ultimatemember->mail->send( um_user('user_email'), 'pending_email' );  

但是,如果用户编辑现有帐户,则无法将现有用户设置为“待定”管理审批。

我不太擅长PHP,但我找到了“um_user_edit_profile”操作的一个钩子,因此如果现有用户编辑他们的配置文件,状态就会更改为“pending”。

见这里:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Set profile to under pending after edits
add_action('um_user_edit_profile', 'um_post_edit_pending_hook', 10, 2); 
function um_post_edit_pending_hook($user_id, $args){ 
if ( is_super_admin() ) {
    return false;
    } else { 
        global $ultimatemember; 
        $ultimatemember->user->pending(); 
    }
}

不幸的是,我刚刚发现‘um_user_edit_profile’动作也被用于注册,所以我的钩子在注册时也会触发,这会导致发送两封电子邮件。

我试图通过以下方法来克服这一问题:

只为登录用户触发添加和if语句这样的操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Set profile to under review after edits
add_action('um_user_edit_profile', 'um_post_edit_pending_hook', 10, 2); 
function um_post_edit_pending_hook($user_id, $args){ 
if ( is_super_admin() ) {
    return false;
    } else {
if ( is_user_logged_in() ) {
        global $ultimatemember; 
        $ultimatemember->user->pending();
    }
}

通过尝试将状态设置为“等待管理审批”,而不包括电子邮件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Set profile to under review after edits
add_action('um_user_edit_profile', 'um_post_edit_pending_hook', 10, 2); 
function um_post_edit_pending_hook($user_id, $args){ 
if ( is_super_admin() ) {
    return false;
    } else { 
        global $ultimatemember; 
        $ultimatemember->set_status('awaiting_admin_review');
    }
}

// Set profile to under review after edits
add_action('um_user_edit_profile', 'um_post_edit_pending_hook', 10, 2); 
function um_post_edit_pending_hook($user_id, $args){ 
if ( is_super_admin() ) {
    return false;
    } else { 
        global $ultimatemember; 
        $this->set_status('awaiting_admin_review');
    }
}

我也尝试了太多的其他变体,包括,他们都破坏了网站。

因此,我请求社区提供一些支持/提示,说明如何在不发送电子邮件的情况下使用挂起的功能,或者如何使用我的钩子将状态设置为“等待管理评审”。

我一直在使用嗯github储存库来帮助我研究UM代码:

EN

回答 2

Stack Overflow用户

发布于 2016-05-17 01:45:49

经过相当深入的研究,我成功地识别了用户编辑个人资料时触发的um_submit_form_profile动作,但没有在注册时使用,从而解决了注册时重复的电子邮件问题。

这是我最初对新动作的钩子。这将在用户编辑其配置文件时将用户状态设置为挂起的管理评审。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Set profile to under pending after edits
add_action('um_submit_form_profile', 'um_post_edit_pending_hook', 10, 2); 
function um_post_edit_pending_hook($user_id, $args){ 
if ( is_super_admin() ) {
    return false;
    } else { 
        global $ultimatemember; 
        $ultimatemember->user->pending(); 
    }
}

多亏了Champ,插件作者之一,我得到了一个更好的修复,它只是将帐户状态更改为等待管理员评审,而没有做任何其他事情。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Set profile to under review after edits
add_action('um_user_edit_profile', 'um_post_edit_pending_hook');
function um_post_edit_pending_hook( $args ){
    $user_id =  $args['user_id'];
    if ( is_super_admin() ) {
        return;
    }
        update_user_meta( $user_id, 'account_status', 'awaiting_admin_review');

}
票数 1
EN

Stack Overflow用户

发布于 2020-05-20 02:49:12

我无法在UM 2+中实现这一点。然而,对于那些仍在努力解决这个问题的人,我确实找到了一种方法,通过在我找到的电子邮件通知片段的末尾添加用户元更改。我还调整了电子邮件,以包括“描述”字段从配置文件,以便管理员可以立即看到它是否已被更改,以包括任何不希望。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*function to notify admin of profile changes*/
add_action( 'um_after_user_updated', 'my_after_user_updated', 10, 3 );
function my_after_user_updated( $user_id, $args, $userinfo ) {
    um_fetch_user($user_id);
    $groupMember = um_user('display_name');
    $groupMmbr_name = um_user('user_login');
    $groupMmbr_hidden = um_user('hide_in_members');
    $groupMmbr_status = um_user('account_status');
    $groupMmbr_desc = um_user('description');
    $loggedIn_user = wp_get_current_user();
    $loggedIn_userEml =  $loggedIn_user->user_email;
    $headers = array('Content-Type: text/html; charset=UTF-8', 'Cc:your-cc-address@yourwebsite.com', 'Bcc:', 
    'From:Your Website <website@yourwebsite.com>', 'Reply-To:No-reply Email<noreply@yourwebsitesite.com>');
    wp_mail( 'your-admin-email-address@yourwebsite.com', 'The member profile '.$groupMember.' has been updated.', 
    'The <b>'.$groupMember.'</b> profile was updated by the user with this email address: '.$loggedIn_userEml.'. <a href="https://yourwebsite.com/member/'.$groupMmbr_name.'/?profiletab=main&um_action=edit"><br>
    <b>Click here</b></a> to visit this profile online.<br><br><i style="color:#767676; font-size:11px; text-align:center;"><b>NOTE:</b> you must be logged in first to see this profile.</i>
    <br><br>The new profile description is:<br><br>'.$groupMmbr_desc.'<br><br>',$headers);
    update_user_meta( $user_id, 'account_status', 'awaiting_admin_review');
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37239106

复制
相关文章
ionic莫名其妙的“cordova/platform_metadata”
我的Cordova升级到8已经很久了,而且在此环境下原有的项目跑得好好的,所以别人说有问题需要把Corodva降级到7.1或者7.0时,我不置可否。
IT晴天
2018/08/20
6300
莫名其妙的噪声都是怎么来的?
这几天心里颇不宁静,今晚在院子里坐着乘凉,忽然想起往日一同攻坚的战友,在这满月的光里,该是另一番样子吧。
工程师看海
2023/05/24
1660
莫名其妙的噪声都是怎么来的?
一次莫名其妙的故障……
前几天,我看到新闻,说是日本、加拿大等地接连爆出通信网络故障,引发了大规模的网络中断。心惊之余,我也想起,就在不久前,我也遇到了一个非常诡异的网络故障,差点引发重大事故。
鲜枣课堂
2022/10/05
3310
关于对象莫名其妙的面试题
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> </html> <script> //首先,创建a对象 var a = {n:1}; console.log("输出a此时的状态"); console.log(a); //把对象a的引用地址,赋值给变量b,这个时候,b指针指向对象a的物理地址,就是引用
李才哥
2019/07/10
2480
关于对象莫名其妙的面试题
网站数据库莫名其妙的掉了?
因为本站站长的服务器不是很大,中规中矩,但这里最令我烦心的是,随便测压,服务器的数据库就会嗝屁。 最近云主机的服务器(CentOS)的数据库(MySQL 5.6.50)无故中断连接,导致部分网站无法访问,这个问题说大不大,说小不小,主要是影响了网站用户的体验,对于搜索引擎来说也不够友好,所以是一个必须处理的问题。
鸣奔博客
2023/03/23
6080
网站数据库莫名其妙的掉了?
姿态估计与行为识别(行为检测、行为分类)的区别[通俗易懂]
姿态估计和行为识别作为计算机视觉的两个领域,对于新人来说,较为容易弄混姿态估计和行为识别两个概念。
全栈程序员站长
2022/06/24
2.7K0
网页的行为
总第62篇 本篇为爬虫基础知识第三篇,JavaScript篇,JavaScript是描述网站行为的,是为了增加与用户的交互,前两篇传送地址: 网页是怎么构成的? 网页的修饰 01|JavaScript是什么: JavaScript 是一种轻量级的编程语言。 JavaScript 是可插入 HTML 页面的编程代码。 JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行,以此来增加HTML页面的交互性。 02|JavaScript怎么用: 1、HTML 中的脚本放在<script>和<
张俊红
2018/04/11
1.4K0
网页的行为
[Silverlight动画]转向行为 - 追捕行为
对于追捕行为,它非常类似寻找行为。其实追捕的最后一个动作就是调用寻找。追捕的本质是预测目标所要到达的位置并事先赶到。 那么,该如何预测目标的位置呢?其实是以目标的当前速度不变为前提,算出未来一段时刻后目标所在的位置。但是需要计算多久的未来才合适呢?我们把这 段时间叫做预测时间(look ahead time)。如果算到很久以后(较长的预测时间)可能就会超越目标,如果只往后算一点点(较短的预测时间)可能仍然落后于目标。而实际上,寻找行为就是一个预测时间为零的追捕行为。 一个策略是基于两机车间的距离来判断预测时
用户1172164
2018/01/16
1.2K0
[Silverlight动画]转向行为 - 寻找行为
寻找行为只是把机车移动到指定点。就像这样: public void seek(Vector2D target) { Vector2D desiredVelocity = target.subtract(_postion); desiredVelocity.normalize(); desiredVelocity = desiredVelocity.multiply(_maxSpeed);
用户1172164
2018/01/16
1.2K0
win10总是莫名其妙卡死怎么解决
win10系统频繁死机怎么办呢?使用电脑时出现最多的问题就是运行卡顿,死机了。虽然有些和我们使用习惯有关,但是最大的影响因素还是软件兼容性以及硬件问题。今天,我就将解决方法分享给你们 win10系统是
用户8002245
2020/12/31
18.9K0
[Silverlight动画]转向行为 - 躲避行为
躲避就是追捕的反行为。就像追捕类似于寻找,躲避类似于避开。 本质上讲,是预测出机车将要去到的位置并远离它。在这里所有的原则都和追捕相同。实际上,就连实现都几乎一模一样,除了最后一行用避开代替寻找: public void evade(Vehicle target) { double lookAheadTime = position.dist(target.position) / _maxSpeed; Vector
用户1172164
2018/01/16
1.1K0
[Silverlight动画]转向行为 - 到达行为
到达行为在很多场合都可以被当作是寻找行为。实际上,它们之间的算法和处理方式都一样。唯一不同的是,在到达模式中,一辆机车在到达目标的某一距离时,会变成一种精确模式慢慢地靠近目标点。 为了了解到达行为的必要性,可以先运行一下SeekTest类,然后移动鼠标到某处让机车过来“抓住”它。会看到机车快速的越过了鼠标,接着它发现过头了,又返回来,还是过头了....于是会一直循环下去。这是因为机车始终保持着最大速度迈向目标,哪怕离目标只有几像素。 到达行为通过减速接近目标,解决了这个问题: public
用户1172164
2018/01/16
1.1K0
[译] 解决 iOS 15 上 APP 莫名其妙地退出登录[译] 解决 iOS 15 上 APP 莫名其妙地退出登录
在 iOS 15 公开推出后, 我们开始从用户端收到反馈报告:在打开我们的应用程序(Cookpad) 时他们被莫名其妙的反复退出到登录页。非常令人惊讶的是,这并不是我们在测试 iOS 15 beta 版的时候发现的问题。
韦弦zhy
2021/12/10
1.6K0
[译] 解决 iOS 15 上 APP 莫名其妙地退出登录[译] 解决 iOS 15 上 APP 莫名其妙地退出登录
带团队:只有人的行为才能影响行为
上级想要下级改变,只有通过自己的行为才能改变下属。我原来写过一篇文章,说管理者如何带团队。说白了就是以身作则。但这里在落地过程中会遇到一些问题。以下六项是需要注意的。
石云升
2022/08/25
4360
[Silverlight动画]转向行为 - 避开行为
避开行为与寻找行为彻底相反。实际上,除了代码最后一行用相减代替了相加以外,其它都一样。 public void flee(Vector2D target) { Vector2D desiredVelocity = target.subtract(_postion); desiredVelocity.normalize(); desiredVelocity = desiredVelocity.multiply(_maxSpeed); Vector2D force = des
用户1172164
2018/01/16
9550
[Silverlight动画]转向行为 - 漫游行为
漫游行为就像它的名字一样,角色在场景中毫无目的的移动。这通常用来模拟巡视和觅食,也有纯粹是为了漫游而漫游的。 漫游行为在实现上不像听起来那么容易。简单的使用随机而产生的布朗运动,会让角色感觉像是一个有神经病的傻瓜。我们需要更自然更平滑的感觉。有个办法,通常 设想在角色前方有个圆,然后把圆上任意一点作为目标,每次更新都向这个随机点移动。由于目标点总是落在假象的圆上,所以转向力永远不会一下子就变化很大。 有几个参数可以调整出不同的漫游的风格:圆的尺寸,圆离开角色的距离,目标点的随机范围。 漫游函数:
用户1172164
2018/01/16
1.1K0
golang 的channels 行为
当我第一次使用 Go 的 channels 工作的时候,我犯了一个错误,把 channels 考虑为一个数据结构。我把 channels 看作为 goroutines 之间提供自动同步访问的队列。这种结构上的理解导致我写了很多不好且结构复杂的并发代码。
李海彬
2018/10/08
9920
golang 的channels 行为
delete的奇怪行为
F的实例拥有一个value属性,但不希望在new的时候就初始化属性值(因为这个值不一定用得到,而且计算成本比较高,或者new的时候还不一定能算出来),那么自然想到通过定义getter来实现“按需计算”:
ayqy贾杰
2019/06/12
2.3K0
静态资源不加载、页面404等莫名其妙的idea错误
可能是target中并没有加载出来,这时候需要重新打包
2020/10/23
1.3K0
静态资源不加载、页面404等莫名其妙的idea错误
聊聊jedis的return行为
org/springframework/data/redis/core/RedisTemplate.java
code4it
2023/09/22
3510

相似问题

从Nib中启动Storyboard?

11

从Storyboard而不是nib加载自定义TableViewCell

13

如何从StoryBoard内部连接到nib?

14

目标C,从.nib过渡到.storyboard

11

使用Storyboard而不是Nib

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文