Permalinks setting

时间:2018-12-18 作者:marvinpoo

所以,我知道这是一个基本的问题,但奇怪的是,它对我不起作用。

我想要的:

以下是我的设置:enter image description here

遗憾的是,这行不通。以下是有关在什么设置下工作的详细信息:

  • Posts: /blog/thema/%category%/%postname%/ + Category: blog/thema = 分类工作,帖子获取404Posts: /%category%/%postname%/ + Category: blog/thema = 类别工作,职位example.com/categoryname/postname
  • Posts: /thema/%category%/%postname%/ + Category: blog/thema = 类别工作,职位example.com/thema/categoryname/postname
  • Posts: /blog/thema/%category%/%postname%/ + Category: thema = 职位工作方式example.com/blog/thema/categoryname/postname/ 但类别的工作方式如下example.com/thema/categoryname
2 个回复
SO网友:Milo

可以让他们共享相同的slug,但您需要自己手动解决冲突。您必须检查请求的URL的结尾是否为现有术语,如果未找到,则相应地重置查询变量:

function wpd_post_request_filter( $request ){
    if( array_key_exists( \'category_name\' , $request )
        && ! get_term_by( \'slug\', basename( $request[\'category_name\'] ), \'category\' ) ){
            $request[\'name\'] = basename( $request[\'category_name\'] );
            $request[\'post_type\'] = \'post\';
            unset( $request[\'category_name\'] );
    }
    return $request;
}
add_filter( \'request\', \'wpd_post_request_filter\' );
这样做的明显缺点是,每个帖子或类别视图都需要额外访问数据库,并且无法获得与帖子slug匹配的类别slug。

SO网友:Jacob Peattie

你试图做的问题是,根据你想要的结构,不可能判断URL是用于子类别还是帖子。

以此URL为例:

http://example.com/blog/thema/abc/def/
是的defabc 类别或者是def 的子类别abc? 我看不出URL,WordPress也看不出来。问题是WordPress不会同时尝试这两种选择。

WordPress在解析URL时只会查找一种类型的内容。所以当WordPress看到这个URL时,它会检查是否有abc 调用def, 如果该类别不存在,WordPress将返回404。这就是为什么你在尝试查看帖子时会得到404。

您需要在结构中添加一些内容,以区分帖子和子类别。例如,如果您使用/blog/post/%category%/%postname% 作为结构,对于子类别,上述URL将如下所示:

http://example.com/blog/thema/abc/def/
这是一个帖子:

http://example.com/blog/post/abc/def/

相关推荐

Permalinks - Archives

WordPress文档说:WordPress offers you the ability to create a custom URL structure for your permalinks and archives. https://codex.wordpress.org/Settings_Permalinks_Screen 我看到此屏幕将如何为特定帖子/页面创建永久链接,但我没有看到此设置屏幕上关于如何为存档帖子/页面创建链接的任何其他详细信息。有人能澄清一下吗?