固定链接仅包含日期信息时不加载Single.php

时间:2016-12-16 作者:Mrweiner

我正在为一个摄影项目创建一个网站,在那里,艺术家每天都拍照并接受采访。因此,我希望帖子的URL结构尽可能简单,即mysite。com/月/日或photoproject。com/12/5。

当我将我的帖子永久链接设置为/%monthnum%/%day%时,链接会正确生成,但会生成索引。php是用来服务帖子的,而不是单一的。php。如果我将永久链接更改为包含其他更“独特”的信息,如帖子标题,则为single。使用php。

我假设这与wordpress所关注的事实有关,我的URL格式在每篇文章中不够唯一。有人有解决方案/解决方法吗?

编辑:正如下面的评论所述,我的URL显然被解释为日期档案并显示为日期档案。在这种情况下,我的问题可能是“有没有办法告诉wordpress不要将其解释为日期档案?”

1 个回复
最合适的回答,由SO网友:Milo 整理而成

您可以通过过滤器和操作强制WP的手在此。这样做并没有给我带来温暖的模糊感——我还没有真正测试过它,所以它可能会产生意想不到的副作用。也许有更好的方法。

第一步(将permalinks设置为/%monthnum%/%day%/) 是挂钩parse_query 并测试请求,其中monthnumday 已设置。如果这是真的,我们会取消设置一些内容并设置一些其他内容,以诱使WP认为这是一个单一的post请求。也许这会破坏其他日期档案,我没有测试过!

function wpd_parse_query( $query ){
    if( isset( $query->query_vars[\'monthnum\'] )
     && isset( $query->query_vars[\'day\'] )
     && 0 != $query->query_vars[\'monthnum\'] ){
        unset($query->is_archive);
        unset($query->is_date);
        unset($query->is_day);
        $query->is_single = 1;
        $query->is_singular = 1;
    }
}
add_action( \'parse_query\', \'wpd_parse_query\' );
下一步是过滤post_limits, 并测试它是一个非零的单数桩的异常情况monthnum. 在本例中,我们将其设置为返回第一个帖子,如果有多个帖子。

function wpd_post_limits( $limit, $query ) {
    if( $query->is_main_query()
     && $query->is_singular()
     && isset( $query->query_vars[\'monthnum\'] )
     && 0 != $query->query_vars[\'monthnum\'] ){
        return \'LIMIT 1\';
    }
    return $limit;
}
add_filter( \'post_limits\', \'wpd_post_limits\', 10, 2 );
如果您不关心这种情况,可以省略该部分-如果模板使用循环,它只会为每个帖子重复包含的标记,尽管循环之外的所有其他数据都会引用第一篇帖子的标题、短链接、正文类等。。

现在,这些请求应该被解释为单发帖子,模板标记应该相应地进行操作,并且将加载单个模板。

相关推荐

Permalinks setting

所以,我知道这是一个基本的问题,但奇怪的是,它对我不起作用。我想要的:https://example.com/blog/thema/类别名称/postname(用于帖子)https://example.com/blog/thema/类别名称(适用于类别)以下是我的设置:遗憾的是,这行不通。以下是有关在什么设置下工作的详细信息:Posts: /blog/thema/%category%/%postname%/ + Category: blog/thema = 分类工作,帖子获取404Posts: /%cat