如何加载用户元数据?

问题描述 投票:0回答:1

Wordpressauthor.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(); ?>  
php wordpress multisite author
1个回答
1
投票

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

假设

username1
username2
是用户数据库表中的实际用户名,您可以使用以下代码片段从 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;
?>
© www.soinside.com 2019 - 2024. All rights reserved.