Как загрузить мета пользователя?

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(); ?>

1

Решение

Вы должны предоставить идентификатор пользователя при использовании 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;
?>
1

Другие решения

Других решений пока нет …