我有自定义帖子类型(审核)。我试图使每个帖子只能在帖子作者和管理员的前端查看。所以,本质上只是一个私人帖子,仅适用于与帖子作者ID和管理员匹配的登录用户。
我已经看到很多关于如何限制管理信息中心中的帖子的答案,但前端没有,因为大多数帖子通常都是公开的。
非常感谢任何帮助!
答案 0 :(得分:2)
我想说这种方法取决于你希望用户看到他们被拒绝访问帖子的内容。您是否要显示一条消息,说您无法查看此帖子?或抛出404?
如果你想抛出404,你可以使用template_redirect
动作挂钩。
add_action('template_redirect', 'hide_from_unauth_users');
function hide_from_unauth_users() {
$author = get_the_author();
$user = wp_get_current_user();
$is_author = "some logic to determine if this is the author";
if( current_user_can('administrator') || ! is_user_logged_in() || ! $is_author ) {
//throw 404 and include 404.php template
}
}
如果您想向用户显示消息,那么您只需在实际的single.php模板上运行完全相同的逻辑并显示授权消息,而不是帖子标题,内容等。
希望这能指出你正确的方向。