博客 / WordPress/ WordPress调用最新注册的用户并显示在侧边栏

WordPress调用最新注册的用户并显示在侧边栏

WordPress调用最新注册的用户并显示在侧边栏

WordPress 调用最新注册用户并显示在侧边栏

在 WordPress 中,有时我们需要在侧边栏或其他位置展示最新注册的用户列表,这可以通过创建一个短代码或直接调用函数来实现。下面是一个经过优化和修正的代码示例,它比原始代码更安全、更标准。

创建获取最新注册用户的函数

将以下代码添加到你的主题的 functions.php 文件中,或通过代码片段插件添加。

/**
 * 获取最新注册的用户列表
 *
 * @param int $limit 要显示的用户数量,默认为5。
 * @return string 返回包含用户头像和昵称的HTML列表。
 */
function wp_get_recently_registered_users( $limit = 5 ) {
    global $wpdb;

    // 参数安全检查
    $limit = absint( $limit );
    if ( $limit <= 0 ) {
        $limit = 5;
    }

    // 准备查询:获取用户昵称、URL和邮箱,按ID降序排列
    $query = $wpdb->prepare(
        "SELECT user_nicename, user_url, user_email FROM {$wpdb->users} ORDER BY ID DESC LIMIT %d",
        $limit
    );
    $users = $wpdb->get_results( $query );

    // 如果没有用户,返回空字符串
    if ( empty( $users ) ) {
        return '';
    }

    $output = '
    '; foreach ( $users as $user ) { // 获取用户头像,尺寸设为45像素 $avatar = get_avatar( $user->user_email, 45 ); // 构建列表项:如果有个人网站则添加链接,否则只显示文本 if ( ! empty( $user->user_url ) ) { // 对URL进行转义,防止XSS攻击 $profile_url = esc_url( $user->user_url ); $output .= sprintf( '
  • %s%s
  • ', $avatar, $profile_url, esc_html( $user->user_nicename ) ); } else { $output .= sprintf( '
  • %s%s
  • ', $avatar, esc_html( $user->user_nicename ) ); } } $output .= '
'; return $output; } /** * 注册短代码 [recent_users] */ function wp_register_recent_users_shortcode( $atts ) { // 解析短代码属性,允许用户自定义显示数量 $atts = shortcode_atts( array( 'limit' => 5, ), $atts, 'recent_users' ); return wp_get_recently_registered_users( $atts['limit'] ); } add_shortcode( 'recent_users', 'wp_register_recent_users_shortcode' );

代码说明与改进

与原始代码相比,此版本进行了以下重要改进:

  • 安全性:使用 $wpdb->prepare() 进行SQL查询参数化,防止SQL注入。对输出的URL和文本使用 esc_url()esc_html() 进行转义。
  • 健壮性:添加了参数验证(absint),确保传入的 $limit 是正整数。
  • 可维护性:函数和短代码命名更具描述性(如 wp_get_recently_registered_users),并添加了详细的文档注释。
  • 功能增强:短代码支持 limit 属性,允许在调用时动态设置显示数量,例如 [recent_users limit="10"]
  • 修正错误:原始代码中链接的HTML拼接存在语法错误(/'%20.%20$username-%3Euser_url%20.%20'),新版已修正为正确的URL输出。

使用方法

你可以通过以下两种方式调用此功能:

1. 使用短代码

在文章、页面或小工具(支持短代码的文本小工具)中直接插入短代码:

[recent_users]

或指定显示数量:

[recent_users limit="8"]

2. 在主题模板文件中直接调用函数

如果你想在侧边栏(sidebar.php)或其他模板文件中直接输出,可以使用:

<?php echo wp_get_recently_registered_users( 5 ); ?>

或者,如果你使用的是WordPress 5.5+的块编辑器主题,可以在需要的位置通过PHP代码块插件或主题钩子来调用。

自定义样式

输出的HTML包含一个CSS类 recently-registered-users,你可以通过主题的 style.css 文件为其添加样式,例如:

.recently-registered-users {
    list-style: none;
    padding-left: 0;
    margin-left: 0;
}
.recently-registered-users li {
    display: flex;
    align-items: center;
    margin-bottom: 10px;
}
.recently-registered-users .avatar {
    border-radius: 50%;
    margin-right: 10px;
}

通过以上步骤,你就可以在WordPress网站中安全、灵活地展示最新注册的用户列表了。

发表评论

您的邮箱不会公开。必填项已用 * 标注。