WordPress - 使用自定义元显示所有用户,不包括某些用户ID

时间:2012-08-30 18:36:09

标签: php wordpress

我正在尝试在页面上显示所有用户的列表。它需要显示他们的姓名,电子邮件地址,网站URL和几个自定义作者元字段。

我开始使用以下查询:

<?php
//displays all users with their avatar and their posts (titles)
$blogusers = get_users_of_blog();
if ($blogusers) {
  foreach ($blogusers as $bloguser) {
    $user = get_userdata($bloguser->user_id);
    echo get_avatar( $user->ID, 46 );
    echo '<div><p>User ID ' . $user->ID . ' ' 
                            . $user->user_firstname . ' ' 
                            . $user->user_lastname . ' ' 
                            . $user->user_url . ' ' 
                            . $user->user_description 
             . '</p></div>';
    $args=array(
      'author' => $user->ID,
      'post_type' => 'post',
      'post_status' => 'publish',
      'posts_per_page' => -1,
      'caller_get_posts'=> 1
    );

  }
}
?>

这显示了基本的用户信息,但没有自定义作者元字段。我把它调到了这个:

<?php
//displays all users with their avatar and their posts (titles)
$blogusers = get_users_of_blog();
if ($blogusers) {
  foreach ($blogusers as $bloguser) {
    $user = get_userdata($bloguser->user_id);
    echo get_avatar( $user->ID, 46 );
    echo '<div><p>User ID ' . $user->ID . ' ' 
                            . $user->user_firstname . ' ' 
                            . $user->user_lastname . ' ' 
                            . $user->user_url . ' ' 
                            . $user->user_description 
           . '</p>'; ?>
        <?php the_author_meta('position', $user);?>
        <?php the_author_meta('telephone');?>
        <?php the_author_meta('linkedin');?>
        <?php the_author_meta('vcard');?>
    <?php echo '</div>';?><?php 
    $args=array(
      'author' => $user->ID,
      'post_type' => 'post',
      'post_status' => 'publish',
      'posts_per_page' => -1,
      'caller_get_posts'=> 1
    );

  }
}
?>

这适用于第一个用户,但对于第二个用户,它会显示第一个用户的自定义作者元数据。

我花了一个小时试图弄清楚如何进一步修改它以显示每个用户拥有的自定义作者元数据,但是我无法让它工作。

如何修改?

此外,我需要能够排除某些用户ID - 我尝试添加'排除'并输入我想要排除的ID,但它不起作用。

请帮忙

3 个答案:

答案 0 :(得分:1)

要使用the_author_meta()函数获取特定用户的元数据,您需要传递用户ID,即

php the_author_meta('telephone' 25); // will get the telephone field's value of user with id 25

因此,在您的代码中,您可以使用

<?php the_author_meta('position', $user->ID);?><?php the_author_meta('telephone', $user->ID);?><?php the_author_meta('linkedin', $user->ID);?><?php the_author_meta('vcard', $user->ID);?>

要排除某些用户,您可以使用in_array功能检查用户ID,即

$excluded_users = array(10, 11, 12); // User Ids to exclude
foreach ($blogusers as $bloguser) {
    if (!in_array($bloguser->user_id, $excluded_users))
    {
        $user = get_userdata($bloguser->user_id);
        echo get_avatar( $user->ID, 46 );
        //...
    }
}

引用: get users of blog函数已被弃用,有关the_author_meta的更多信息。

答案 1 :(得分:0)

the_author_meta( $key);将始终检索有关作者的元信息。如果您需要来自任何用户的元数据,则需要使用get_user_meta($user_id, $key, $single);并使用$user->ID作为ID。

您可以在Codex

中找到更多信息

答案 2 :(得分:0)

试试吧

echo get_the_author_meta('address', $user->ID);

查看网址

https://wordpress.stackexchange.com/questions/10091/author-custom-fields-post-meta-the-code