Wordpressauthor.php 未从用户元加载正确的信息。它正在加载当前登录博客的人员,而不显示其链接到的人员,例如:
http://www.website.com/author/username1
http://www.website.com/author/username2
尽管是两个不同的用户,仍显示相同的内容。我已经完成了要求的操作,但是我仍然很困惑为什么它只加载当前用户的元而不是用户名的元?
这是我的作者模板:
<?php get_header(); ?>
<div class="author-name">
<?php echo get_the_author_meta('first_name'); ?>
<?php echo get_the_author_meta('last_name'); ?>
<?php echo get_user_role('user_role'); ?>
</div>
<div class="author-information">
Username: <?php echo get_the_author('user_nicename'); ?>
</div>
<?php get_footer(); ?>
使用 get_the_author_meta() 获取与循环中或当前登录的用户不同的用户时,您必须提供用户 ID。
假设
username1
和 username2
是用户数据库表中的实际用户名,您可以使用以下代码片段从 URL 获取用户名:
$username_from_url = basename( get_permalink() );
然后:
$user = get_user_by( 'login', $username_from_url );
现在您拥有完整的
$user
对象,其中包含 ID 和所有内容。
编辑:完整解决方案
用户访问具有以下模式的 URL
/page/somename
,其中 somename
对应于数据库表中用户的 user_nicename
users
。
<?php
$username_from_url = basename( get_permalink() );
$user = get_user_by( 'slug', $username_from_url );
echo get_the_author_meta( 'first_name', $user->ID );
echo get_the_author_meta( 'last_name', $user->ID );
foreach ($user->roles as $role) {
// You can also use get_role( $role ) to get more data on the role
echo $role;
}
echo __( "Username:" ) . " " . $user->user_nicename;
?>