我们在发布文章或资源时,有时希望部分内容仅对登录用户可见。这种“登录后可见”的小功能实现简单,效果实用。下面将介绍如何在 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,用于美化登录链接的样式。
nice
@小酥猫 thanks