要添加到@EAMann的答案中,您需要包装您的wp_get_current_user()
调用(或尝试访问中定义的函数的任何调用pluggable.php
) 在\'plugins_loaded\'
行动
如果你把这个放进你的functions.php
文件,这样做:
add_action( \'plugins_loaded\', \'get_user_info\' );
function get_user_info(){
$current_user = wp_get_current_user();
if ( !($current_user instanceof WP_User) )
return;
echo $current_user->user_login;
// Do the remaining stuff that has to happen once you\'ve gotten your user info
}
请注意,我们对该函数返回的内容不感兴趣。我们感兴趣的是该函数何时执行,即在
pluggable.php
文件已加载并定义
wp_get_current_user()
作用
所以,不要期望对这个函数的返回值做任何事情。相反,当您获得当前用户的信息后,可以将此函数作为您想要执行的所有操作的起点。
在插件中执行此操作
为了完整起见,下面是如何从您自己的插件上下文中访问类似的可插入功能:
(将其放入plugins
文件夹)
class WPSE_58429 {
public function __construct(){
add_action( \'plugins_loaded\', array( $this, \'check_if_user_logged_in\' ) );
}
public function check_if_user_logged_in(){
if ( is_user_logged_in() ){
// ... do stuff for your logged-in user
}
}
}
$wpse_58429_plugin = new WPSE_58429();
我已经成功地将这种技术用于一种非常简单的“即将推出”类型的插件,如果用户没有使用
wp_safe_redirect()
.