如何加载用户元?

时间:2015-06-03 19:43:18

标签: php wordpress meta author multisite

Wordpress author.php未从用户meta加载正确的信息。它正在加载当前登录博客并且不显示其链接到的人,例如:

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 个答案:

答案 0 :(得分:1)

使用get_the_author_meta()时,您必须提供用户ID,以获得与循环中当前登录或当前登录用户不同的用户。

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

$username_from_url = basename( get_permalink() );

然后:

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

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

修改:完整解决方案

用户访问具有以下格式/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;
?>