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

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

只需要将下面的代码加入到 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' );
AD: 【腾讯云服务器大降价】 2核4G 222元/3年 1核2G 38元/年
网站:阿蛮君博客
标题:WordPress 只给非管理员用户看具有特定标签的文章
链接:https://www.amjun.com/1065.html
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!
THE END
分享
二维码
打赏
海报
WordPress 只给非管理员用户看具有特定标签的文章
内部搭建的博客可能有这么一种情况,组内的大部分博客内容需要保密,但是某些博客需要分享给其他同事查看。 只需要将下面的代码加入到 function.php 文件,即……
<<上一篇
下一篇>>