在访问$CURRENT_USER之前,我是否总是需要调用wp_Get_Current_User()?

时间:2020-01-12 作者:Phil Turpin

我正在编写一个简单的插件,它可以在用户登录和注销时运行。(我是PHP n00b,这纯粹是教育)

It参考$current_user (在函数中定义为全局)。这一切都正常运转。

除了,在我看到的所有代码片段中$current_user, 一些电话wp_get_current_user() 事先,有些人不这样做。

我的问题是。。。在访问$current\\u user之前,是否应该始终调用wp\\u get\\u current\\u user(),或者可以安全地假定已经调用了wp\\u get\\u current\\u user()(警告代码在WordPress管理面板中运行-因此用户必须登录)?

我问的原因是。。。调用已经调用的函数似乎效率低下(如果用户登录了,那么必须调用它,对吗?),但我们也不应该假设任何事情(如果出于某种奇怪的原因,$current\\u user的名称在将来的Core中发生了更改怎么办)。

当然,还有第三种选择只是突然出现在脑海中。。。测试是否已设置/定义$current\\u user,如果未设置/定义,请调用wp\\u get\\u current\\u user()。

TBH最后一种选择似乎是“效率vs鲁棒性”的最佳折衷方案,但我仍然很想知道人们认为哪种方法是最好的以及为什么。

1 个回复
最合适的回答,由SO网友:butlerblog 整理而成

是的,作为最佳实践,您应该致电wp_current_user() 因为你不能假设$current_user 已设置(或者如果对您要查找的用户正确设置)。

当然,还有第三种选择只是突然出现在脑海中。。。测试是否已设置/定义$current\\u user,如果未设置/定义,请调用wp\\u get\\u current\\u user()。

事实上,这种情况已经发生了。wp_get_current_user() 只是私有方法的包装器_wp_get_current_user(), 所以你可以看看这个函数,看看它是做什么的。它做的第一件事是检查$current_user 存在并已填充,如果是,则返回$current_user.

解决您的效率/低效问题,因为该方法已经在检查$current_user 如果加载了,那么如果您执行此操作,然后运行wp_get_current_user() 因为那是不必要的步骤。

相关推荐

用于呈现保存在php文件中的html的块

我有一个html片段保存为php文件(例如。mywidget.php):<?php if (!defined(\'ABSPATH\')) exit; ?> <div> foo bar baz </div> 在单独的文件中mywidget-block.php, 如何创建“包装”标记的块mywidget.php?块文档非常复杂,我希望创建这个最简单的块,而不必学习react。它所做的就是输出保存在php文件中的h