Как загрузить пользовательские метаданные?

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

person user3348182    schedule 03.06.2015    source источник


Ответы (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;
?>
person Niklas Brunberg    schedule 04.06.2015
comment
Можете ли вы поместить это в мой код выше в качестве примера, поскольку я пытался, и он все еще не работает, я, возможно, делаю что-то простое совершенно неправильно, иногда требуется другой мозг, чтобы выбрать мой, как только я увижу демонстрацию, плохо знаю, что я я делаю неправильно - person user3348182; 05.06.2015
comment
Это все еще не работает: / не уверен, почему его сложно редактировать, так как он ломал мне голову всю последнюю неделю. Я сделал чистую установку WordPress и стер базу данных, как я думал, это могло быть в один момент, но это не так, приведенный выше код все еще не получает данные, не знаю, почему - person user3348182; 05.06.2015
comment
Мне удалось заставить его работать с сообщениями, которые я использовал в качестве шаблона, однако мне также нужно, чтобы он работал с author.php, который представляет собой код, загружающий автора сообщений, мне нужны оба, поэтому приведенный выше код получает галочку и большие пальцы как вы решили другую проблему, которая у меня была, однако на моем author.php он не загружает ничего из вышеперечисленного - person user3348182; 05.06.2015
comment
Посмотрите на эту страницу, чтобы узнать, как следует обращаться с шаблонами авторов для правильной загрузки пользовательских данных: codex.wordpress.org/ Автор_Шаблоны - person Niklas Brunberg; 05.06.2015
comment
Кроме того, приведенный выше код не работает для того, для чего я его хотел, он постоянно загружает последнего пользователя на одних и тех же страницах? - person user3348182; 05.06.2015
comment
На website.com/author/username1 и website.com/author/username2 что возвращает var_dump($username_from_url)? - person Niklas Brunberg; 05.06.2015
comment
Дает мне пустую белую страницу, даже без верхнего или нижнего колонтитула - person user3348182; 05.06.2015
comment
Также это работает для автора-администратора, но не работает для любого другого имени пользователя? - person user3348182; 05.06.2015