WordPress author.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 () чтобы получить другого пользователя, чем тот, кто находится в цикле или в настоящее время вошел в систему.
Если предположить, username1
а также username2
фактические имена пользователей в таблице базы данных пользователей, вы можете получить имя пользователя из URL, используя следующий фрагмент:
$username_from_url = basename( get_permalink() );
А потом:
$user = get_user_by( 'login', $username_from_url );
Теперь у вас есть полный $user
объект с идентификатором и все.
Редактировать: полное решение
Пользователь посещает 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;
?>
Других решений пока нет …