我在插件中获取作者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
保持“非对象”
最合适的回答,由SO网友:TheDeadMedic 整理而成
wp_loaded
太早,请求尚未分析-使用操作wp
相反(在WP::main()
, 解析请求并查询帖子后)。
要获取用户对象,只需使用$author = get_queried_object();