如何在查看作者页面时获取作者ID?

时间:2014-09-11 作者:henrywright

我在插件中获取作者ID时遇到问题init() 方法

我上钩了init()wp:

public function __construct() {
    add_action( \'wp\', array( $this, \'init\' ) );
}
我的init() 方法:

public function init() {
    // Get the author ID if the author page is being viewed.
    if ( is_author() ) {
        $author = ( get_query_var( \'author_name\' ) ) ? get_user_by( \'slug\', get_query_var( \'author_name\' ) ) : get_userdata( get_query_var( \'author\' ) );
    }
    // I want to be able to do $author->ID here but I get a debug notice.
}
我收到调试通知“尝试获取非对象的属性”。我怀疑这是因为以下陈述不起作用:

$author = ( get_query_var( \'author_name\' ) ) ? get_user_by( \'slug\', get_query_var( \'author_name\' ) ) : get_userdata( get_query_var( \'author\' ) );
内部init(), 查看作者页面时,如何获取作者ID?

Update: 正如死亡医生所指出的,我应该wp 而不是plugins_loaded. 但这并不能解决问题。$author 保持“非对象”

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

wp_loaded 太早,请求尚未分析-使用操作wp 相反(在WP::main(), 解析请求并查询帖子后)。

要获取用户对象,只需使用$author = get_queried_object();

结束

相关推荐

安全错误WP 4.0+WP phpBB网桥

所以今天我更新到了4.0(很高兴有备份)。在我试图发表帖子之前,一切都很顺利。我找到了Are you sure you want to do this. 也有Cheatin\' Uh 在“外观->自定义”下。信息量确实很大。我转向谷歌,在谷歌搜索和启用/禁用插件的实验后,我发现是哪一个导致了它。是的WP phpBB Bridge. 这是一个允许用户使用phpBB帐户登录WP的插件。在搜索了该插件的代码后,我发现问题是由load_session_id() 中的函数wp_phpbb_bridge.php