用图像和名称在网格中显示WordPress用户

时间:2018-10-11 作者:Rick

我正在寻找一种在网格中的页面上显示Wordpress用户的方法。最好是有图像和名称。这是一个公司内部网上的脸谱页面(不是扎克伯格的蓝色版本)。

在我目前的情况下,我有:

在我想按组显示用户的页面上,添加了填充配置文件的Wordpress实例用户被分配到一个部门(营销、物流等)。最好使用短代码([wpusers group=“logistics”])或pagebuilder元素。

我怎样才能让它工作?有没有这个插件(我一直找不到)?或者可以通过一些半亲编码?

我期待着您的回答/建议。

编辑-20181101:

==========================================================

我想我在最初的问题中跳过了一些重要信息:

通过使用BuddyPress插件,该站点被用作intranet

1 个回复
SO网友:Jesús Magallón

首先要做的是创建所需的短代码:

function wpusers_shortcode( $atts ) {
    // Attributes
    $atts = shortcode_atts(
        array(
            \'group\' => \'logistics\',
        ),
        $atts
    );
    // code here
}
add_shortcode( \'wpusers\', \'wpusers_shortcode\' );
现在您有了一个自动关闭的短代码。现在是时候查阅数据库以获取所有注册用户了:

$args = array(
    \'role\'           => \'Subscriber\',
    \'order\'          => \'ASC\',
    \'orderby\'        => \'id\',
    \'fields\'         => \'all_with_meta\',
);

// The User Query
$users = new WP_User_Query( $args );

// The User Loop
if ( ! empty( $users->results ) ) {
    foreach ( $users->results as $user ) {
        // do something
    }
} else {
    // no users found
}
使用此代码,您可以获得所有已注册的“Subscriber”类型的用户。您可以通过以下方式更改用户(角色)的类型:“超级管理员”、“管理员”、“编辑”、“作者”、“贡献者”、“订阅者”,甚至您自己的自定义角色:“教师”。

假设您使用的是Bootstrap,以下结构足以生成列:

<div class="container">
   <div class="row users">
       <div class="col-xs-12 col-sm-4 col-md-3 user">
           <div class="user-photo">
               <img src="..." width="" height="" />
           </div>
           <div class="user-info">
               <h6>User name</h6>
               <p>User job</p>
           </div>
       </div>
   </div>
</div>
如果我们把所有的东西都放在一起,它会是这样的:

function wpusers_shortcode( $atts ) {

    // Attributes
    $atts = shortcode_atts(
        array(
            \'group\' => \'logistics\',
        ),
        $atts
    );

    $args = array(
        \'role\'           => \'Subscriber\',
        \'order\'          => \'ASC\',
        \'orderby\'        => \'id\',
        \'meta_query\'     => array(
                \'relation\' => \'AND\',
                array(
                      \'key\'     => \'group\', // custom field here
                      \'value\'   => $atts["group"],
                      \'compare\' => \'=\',
                      \'type\'    => \'CHAR\',
                ),
        ),
        \'fields\'         => \'all_with_meta\',
    );

    // The User Query
    $users = new WP_User_Query( $args );

    ob_start(); // Start buffer ?>

    <div class="container"> <?php
        if ( ! empty( $users->results ) ) { ?>
            <div class="row users"> <?php
                foreach ( $users->results as $user ) {
                    $user_photo = ...;
                    $user_name = ...;
                    $user_job = ...; ?>
                    <div class="col-xs-12 col-sm-4 col-md-3 user">
                        <div class="user-photo">
                            <img src="<?= $user_photo["url"] ?>" width="<?= $user_photo["width"] ?>" height="<?= $user_photo["height"] ?>" />
                        </div>
                        <div class="user-info">
                            <h6><?= $user_name ?></h6>
                            <p><?= $user_job ?></p>
                        </div>
                    </div> <?php
                } ?>
            </div> <?php
        } else { ?>
            <div class="row user-no-result">
                <div class="col">
                    <div class="alert alert-warning">
                        <p><?= __("No users found.", "theme") ?></p>
                        <a class="btn btn-link"><?= __("Return to home", "theme") ?></a>
                    </div>
                </div>
            </div> <?php
        } ?>
    </div> <?php

    $output = ob_get_contents(); // Get buffer content
    ob_end_clean(); // Clear buffer
    return $output; // Return generated html
}
add_shortcode( \'wpusers\', \'wpusers_shortcode\' );
希望你帮忙,问候!

结束

相关推荐

从具有序列化值的元键获取GET_USERS

我想做一个get_users() 当元键有两个值时。例如,在db中,它如下所示:a:2:{i:0;s:10:\"31.08.2017\";i:1;s:9:\"username\";} 当我进行查询时:$claimed_users = get_users(\'meta_key=username\'); 并尝试输出它:print_r($claimed_users);它刚刚回来Array().我做错了什么?有没有更好的方法?