如何在WordPress/PHP中对未登录用户隐藏biz_links自定义字段
实现方法:通过functions.php限制登录用户查看自定义字段
当然可以!你只需要在主题的functions.php文件中添加一段代码,利用WordPress的元数据过滤钩子,就能全局限制biz_links字段仅对登录用户可见,完全不用逐个页面修改。
具体代码
add_filter('get_post_metadata', 'restrict_biz_links_to_logged_in_users', 10, 4); function restrict_biz_links_to_logged_in_users($value, $object_id, $meta_key, $single) { // 仅针对biz_links字段做限制处理 if ($meta_key === 'biz_links') { // 未登录用户直接返回空值,隐藏字段内容 if (!is_user_logged_in()) { return $single ? '' : array(); } } // 其他字段保持原有逻辑正常返回 return $value; }
代码说明
get_post_metadata是WordPress内置的核心钩子,能拦截所有获取文章元数据的请求,刚好适合做全局字段权限控制- 函数会先判断当前请求的元字段是否是
biz_links,如果是则检查用户登录状态:- 未登录用户:根据
get_post_meta的调用场景(是否返回单个值),返回空字符串或空数组,直接隐藏字段内容 - 登录用户:正常返回字段的原有内容
- 未登录用户:根据
- 网站上其他自定义字段不受任何影响,依然正常显示
额外注意事项
- 修改
functions.php前记得先备份文件,避免代码错误导致网站无法访问 - 如果使用的是子主题,建议把代码添加到子主题的
functions.php中,这样主题更新时不会丢失你的自定义修改 - 不管你的主题是通过模板代码调用字段,还是在后台自定义字段模块显示内容,这段代码都能生效,因为所有获取元数据的操作都会经过这个钩子
内容的提问来源于stack exchange,提问作者George Locke
相关产品推荐
相关产品推荐

