Wordpress查询用户并显示为分类

时间:2018-04-28 21:33:26

标签: php arrays wordpress

我已经返回了注册用户列表。我希望能够查询这些结果,并生成点击页面。这可能。

我试图通过搜索(例如名字)来获取用户列表,然后在前端点击以显示有关用户的信息。它主要是点击通过im有困难。

例如,如果我可以点击一个成员,它将进入一个具有用户名,姓氏等的页面。

        <?php
        $blogusers = get_users();
        // Array of WP_User objects.
        foreach ( $blogusers as $user ) {

        if ( in_array( 'team_member', (array) $user->roles ) ) {
        ?>

        <div class="member_user">
             <a href="<?php echo the_permalink();?>">

                    <?php
                          echo $user->first_name." ".$user->last_name;
                    ?>


            </a>
        </div>

        <?php
       }
         }   
   ?>     

4 个答案:

答案 0 :(得分:1)

两个半接近:

  1. 您可以自定义主题的作者存档模板以显示所需的信息。模板层次结构中提供了三个作者档案:

    • 作者 - {nicename} .PHP
    • 作者 - {ID} .PHP
    • author.php
  2. 您可以为每个用户链接到https:// {site_url} / author / {username}。

    1. 但是,如果您想保留普通作者博客存档添加新的个人资料页面,这可能并不理想。因此,长期可能更好的是为成员配置文件设置自定义帖子类型,然后每次创建新的“成员”用户时都会运行一个创建代表用户的新帖子的函数。
    2. 您可以使用register_post_type()手动注册该自定义帖子类型,或者如果您需要帮助,则可以Custom Post Type UI添加一个好的插件。

      您的函数挂钩的好动作是user_register,因为它在用户注册后立即发生,但可以访问用户数据。在您的功能中,您可以使用wp_insert_post()创建新帖子。

      然后,您可以使用archive-$posttype.phpsingle-$posttype.php模板显示该自定义帖子类型的信息。

      2 1/2。您也可以考虑仅使用 自定义帖子类型,而不是根本不查询用户。如果这个成员资料是一些人是用户的唯一原因,这种方式甚至可能更方便。然后,您可以轻松使用archive-$posttype.phpsingle-$posttype.php模板来显示您选择的信息。

答案 1 :(得分:1)

我会生成这样的链接:

                <?php
                      echo $user->first_name." ".$user->last_name;
                      echo '<a href="user-profile?user_id=' . $user->id . '">view user</a>';
                ?>

然后在下一页上查询用户ID以获取所需信息。

在下一页上,您可以:

<?php
$user_ID = $_GET['user_id'];
get_header();
?>

然后查询此内容以获取与该用户相关的任何内容

答案 2 :(得分:1)

如果我理解正确,您已经有了一个用户列表,并且您希望每个用户都可以链接到自己的页面,您可以在其中显示所需的信息,例如名字,姓氏等。 / p>

首先,您必须查询用户并循环浏览以在列表中显示它们。您已经在代码中使用了这个,但如果您想要更高级的内容,查询将如下所示:

$authors = get_users(array(
    'role__not_in' => array('Subscriber', 'Administrator'),  
     //if you do not want to list the admins and subscribers
    'orderby' => array(
        'post_count' => 'DESC',
        //order users by post count (how many posts they have)
    )
));

foreach ($authors as &$author){
   //loop through the users
   $user_info = get_userdata($author->ID);
   $user_link = get_author_posts_url($author->ID);

   ?>
   <a href="<?php echo $user_link; ?>" style="display:block;">
        <?php echo $user_info->first_name.' '.$user_info->last_name; ?>
   </a>
   <?php
}

然后您需要为用户创建页面。 WordPress通过 author.php 页面处理此问题。如果您的主题没有,请创建一个名为author.php的php文件,并将其放在主题的根文件夹中。

您可以修改 author.php 以包含所需的数据。但是,如果您删除默认情况下为所选用户显示的帖子列表,您将在主题中删除此功能。

所以在author.php中你可能会像这样得到用户:

//get current user (object):
$current_author = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author));

//get User data by user ID
$user_info = get_userdata($current_author->ID);

//echo first & last name:
echo $user_info->first_name.' '.$user_info->last_name;

如果您制作print_r($user_info),您可能会看到可以为所选用户显示的信息。

您也可以使用'get_the_author_meta'功能从用户的个人资料中获取更多信息,例如

get_the_author_meta('description', $current_author->ID);

您可以在此处找到有关此功能的更多信息:https://developer.wordpress.org/reference/functions/get_the_author_meta/

答案 3 :(得分:0)

有一个功能。使用get_author_posts_url()

在所需模板中,使用以下代码:

// only return required user based on role
$args = array(
    'role' => 'team_member'
);

$blogusers = get_users( $args );

// loop though and create output
foreach ( $blogusers as $user ) : ?>

    <div class="member_user">
        <a href="<?php echo get_author_posts_url( $user->ID );?>"> // links to author page
            <?php echo $user->first_name." ".$user->last_name; ?> 
        </a>
    </div> 

<?php endforeach;

然后,您需要自定义主题中的author.php模板,以便根据需要进行渲染。