Prevent private post 404

时间:2013-06-05 作者:Ben Everard

我希望私人帖子(对于那些没有登录的人)使用single.php 模板就像公共帖子一样,在他们被扔到404.php 样板

我已经仔细查看了核心文件,但找不到模板更改的位置(注意:这不是重定向)。

有人能帮忙吗?

Edit

为了解释我为什么要这样做,我希望所有访问者都能看到内容的预览,但登录“成员”可以看到整个帖子内容。

2 个回复
SO网友:Pat J

根据Content Visibility 页面中,只有拥有足够权限级别的人才能看到私人帖子。WordPress根本不会向未登录的用户公开它们,因此(大概)404.

如果要向非成员显示有限预览,而不是将帖子设置为Private, 您可以尝试以下方式:

add_filter( \'the_content\', \'wpse101968_preview\' );
function wpse101968_preview( $content ) {
    if( is_single() ) {
        if( ! is_user_logged_in() ) {
            $content = get_the_excerpt();
        }
    }
    return $content;
}
然后,您的未登录访问者将看到该帖子的摘录,而不是整个帖子。您也可以自定义摘录,以便它们只看到您希望它们看到的内容。

参考文献法典:

SO网友:s_ha_dum

您并没有看到重定向,以确认您自己的观察结果,而是看到了它的样子——“找不到文件”。看看the query in the source around line 2438 (among others). 帖子的状态是查询本身的一部分,因此如果状态不匹配,则找不到帖子,这意味着404. 从代码中可以看出,status 受到相当严格的保护。事实证明,这很难推翻。

我建议为您的“仅登录”帖子使用自定义帖子类型。这将更容易控制前端和后端。

结束

相关推荐

Sub category templates

我继承了一个Wordpress网站,我的公司在我开始在这里工作之前就建立了这个网站。我会去问建造它的人这个问题,但他现在已经离开了公司。我的查询与wordpress类别的自定义模板相关。我知道您可以创建一个名为“类别-”的模板文件。当访问该类别时,它将使用该自定义模板。在本例中,该文件称为“category limousin magazine”。php\'这很好——我的问题涉及到这个类别的子类别,即在《利木赞》杂志下,我有2011、2010、2009、2008、2007和2006个类别。不知何故,在建立网