1

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

1 回答 1

1

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

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

$username_from_url = basename( get_permalink() );

进而:

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

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

编辑:完整的解决方案

用户访问具有以下模式的 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;
?>
于 2015-06-04T15:32:25.717 回答