使用与发布URL固定链接相同的字符串的类别URL

时间:2017-08-12 作者:James Mitchell

我想将我的站点设置为具有以下永久链接结构:

/learn/%category%/%postname%
因此,在wordpress的permalinks部分,我将其设置为自定义结构。问题是,当我点击分类页面时,它只是:

 /%category%/
(结果是/category/subcategory/ url)。

因此,我尝试将permalinks设置页面上的category base也设置为/learn/, 但当我转到帖子页面时,我得到了404。

My Structure如何使分类页和帖子页都使用/learn/ 要启动url?

1 个回复
SO网友:Milo

问题是重写规则重叠,WordPress正试图找到与post slug匹配的类别名称。

一种可能的解决方案是执行一些手动查询解析,检查请求是否包含category_name 并首先是一个术语,然后将查询变量重置为postname 如果未找到任何内容:

function wpd_fix_category_requests( $request ){
    if( array_key_exists( \'category_name\' , $request )
        && ! get_term_by( \'slug\', basename( $request[\'category_name\'] ), \'category\' ) ){
            $request[\'name\'] = basename( $request[\'category_name\'] );
            unset( $request[\'category_name\'] );
    }
    return $request;
}
add_filter( \'request\', \'wpd_fix_category_requests\' );
这是非常基本的,对于黄金时段来说可能不够可靠。显然,您不能有与类别名称匹配的post slug。此外,单一的后期分页将不起作用,我假设附件URL也将被破坏。

如果你愿意的话,你可以按照这个方法解决所有这些问题。看看什么$request 包含每种类型的页面视图,可能具有不同的永久链接结构,以便您可以看到成功案例中的外观。您只需将查询变量从一种请求转换为另一种请求,WordPress将继续加载正确的对象。

结束

相关推荐

WP_User_Query and user posts

我使用WP\\u User\\u查询查询了一个用户列表,从中我获得了头像、名称和一些我为用户注册创建的ACF。现在,我需要获得结果中每个用户的帖子列表,但我不知道怎么做。这是我在WP\\u User\\u query中的查询:$postArgs = array ( \'author__in\'=> array(2,4,6), //Authors\'s id\'s you like to include \'post_ty