我有一个自定义帖子类型(审核)。我试图使每个帖子只能由帖子作者和管理员在前端查看。因此,从本质上讲,私人帖子仅适用于与帖子作者ID和管理员匹配的登录用户。
我已经看到了很多有关如何限制管理仪表板中帖子的答案,但对于前端没有一个答案,因为大多数帖子通常都是公开的。
非常感谢您的帮助!
我会说,方法取决于您希望用户查看他们是否被拒绝访问该帖子。您是否要显示一条消息,说您无法查看此帖子?还是抛出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模板上运行与上面完全相同的逻辑,并显示授权消息,而不是帖子标题,内容等。
希望这会为您指明正确的方向。
如何为自定义帖子类型自定义此功能我创建了一个Custom帖子类型,它可以由USERS提交在正面,并且只需要提交该帖子的用户才能在正面看到它。我在前面使用Pods Custom帖子类型和Caldera Form。