WordPress 只给非管理员用户看具有特定标签的文章

165次阅读
没有评论

共计 819 个字符,预计需要花费 3 分钟才能阅读完成。

内部搭建的博客可能有这么一种情况,组内的大部分博客内容需要保密,但是某些博客需要分享给其他同事查看。

只需要将下面的代码加入到 function.php 文件,即可实现所有用户可以查看带有 public 标签的文章,访问其他文章一律需要管理员用户,其他用户访问均返回 404。

function my_template_redirect() {
    if ( is_home() && !is_user_logged_in() ) {
        wp_redirect( wp_login_url() );
        exit;
    }
    // 检查是否在访问单一文章页面
    if ( is_singular() ) {
        $post_id = get_queried_object_id(); // 获取当前文章ID

        // 检查文章是否为公开文章,如果不是,检查用户是否登录
        if ( ! has_tag( 'public', $post_id ) && ! is_user_logged_in() ) {
            wp_redirect( wp_login_url( get_permalink() ) ); // 重定向到登录页面
            exit;
        }
    }
    // 非管理员用户登陆,也不可查看文章
    if ( is_user_logged_in() ) {
        $user = wp_get_current_user(); // 获取当前用户对象

        // 检查用户是否为管理员
        if ( ! current_user_can( 'manage_options' ) ) {
            // 如果不是管理员,则将文章设置为空
            global $wp_query;
            $wp_query->post = null;
            $wp_query->is_page = false;
            $wp_query->is_singular = false;
            $wp_query->set_404(); // 设置为404错误页面
            status_header(404);
            nocache_headers();
        }
    }
}
add_action( 'template_redirect', 'my_template_redirect' );

提醒:本文发布于389天前,文中所关联的信息可能已发生改变,请知悉!

AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完
 
阿蛮君
版权声明:本站原创文章,由 阿蛮君 2023-03-06发表,共计819字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
Copyright © 2022-2024 阿蛮君博客 湘ICP备2023001393号
本网站由 亿信互联 提供云计算服务 | 无忧云 提供安全防护和加速服务