博客 / WordPress/ WordPress实现文章内容登录后可见

WordPress实现文章内容登录后可见

WordPress实现文章内容登录后可见

我们在发布文章或资源时,有时希望部分内容仅对登录用户可见。这种“登录后可见”的小功能实现简单,效果实用。下面将介绍如何在 WordPress 中实现此功能。

核心代码

将以下 PHP 代码添加到当前主题的 functions.php 文件中:

// 部分内容登录可见短代码函数
function login_to_read($atts, $content = null) {
    // 设置默认提示信息
    $atts = shortcode_atts(
        array(
            'notice' => '此处内容需要<a href="' . wp_login_url() . '" title="登录后可见">登录</a>后才能查看!'
        ),
        $atts,
        'login'
    );
    // 判断用户是否已登录、内容非空且非Feed输出
    if (is_user_logged_in() && !is_null($content) && !is_feed()) {
        return do_shortcode($content); // 返回并解析短代码内的内容
    }
    // 返回提示信息
    return $atts['notice'];
}
add_shortcode('login', 'login_to_read');

代码说明与改进

与原代码相比,此版本进行了以下优化:

  • 安全性增强:使用 shortcode_atts()
  • 功能完善:使用 wp_login_url() 动态生成登录链接,而非硬编码 /wp-admin
  • 兼容性更好:通过 do_shortcode() 处理隐藏内容中的嵌套短代码。
  • 代码结构更清晰:修正了缩进,并添加了注释。

使用方法

添加代码后,在文章编辑器的文本模式(非可视化模式)下,使用短代码包裹需要隐藏的内容。

使用示例

1. 使用默认提示信息:

[login]这是仅登录用户可见的隐藏内容。[/login]

2. 使用自定义提示信息:

[login notice="请<a href="/login">登录</a>后查看完整资源。"]这里是重要的下载链接或详细教程。[/login]

注意事项

  • 此功能依赖于 WordPress 的用户系统,请确保站点已开启用户注册或拥有已注册用户。
  • 短代码仅在文章/页面内容中生效,在侧边栏小工具等位置使用可能需要额外处理。
  • 提示信息中可包含 HTML,用于美化登录链接的样式。

2 条评论

  1. avatar
    小酥猫

    nice

    1. avatar
      主题君

      @小酥猫 thanks

回复 主题君 取消回复

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