如何加载用户元?

How to load User Meta?

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() 获取与循环中或当前登录的用户不同的用户时,您必须提供用户 ID。

假设 username1username2 是用户数据库中的实际用户名 table 您可以使用以下代码段从 URL 中获取用户名:

$username_from_url = basename( get_permalink() );

然后:

$user = get_user_by( 'login', $username_from_url );

现在您拥有带有 ID 和所有内容的完整 $user 对象。

编辑:完整解决方案

用户访问具有以下模式的 URL /page/somename 其中 somename 对应于数据库中用户的 user_nicename table 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;
?>