使开机自检辅助模块优先于类别辅助模块

时间:2012-12-10 作者:bertkat

我有一个wordpress网站,从url中删除了类别库。

现在,当一个类别有一个类似于后期slug的slug时,就会显示该类别。

我想展示一下帖子。这可能吗?

谢谢

2 个回复
最合适的回答,由SO网友:Matthew Boynes 整理而成

没有一个干净的方法来满足你的要求。您希望WordPress检查给定URL中是否有包含该段代码的帖子,如果没有,请尝试查找包含该段代码的类别。除了页面之外,WordPress在“提交”到匹配的重写规则之前不会检查对象(post,term)是否存在。因此,当您有冲突的重写规则时,第二个规则将永远不会被读取。

最好的答案是为你的帖子或类别找到不同的重写结构。前缀是理想的,比如/blog/%postname%/, /articles/%postname%/ 对于帖子,或/category/%category%/, /topic/%category%/ 对于类别。

也就是说,按你的要求去做并不是不可能的,只是不是最优的。您需要做的是拦截request 并检查该帖子是否存在。如果不是,请更改查询变量。请注意,这会增加每篇文章的页面负载,因此请权衡成本与收益。还请记住,如果帖子和类别共享相同的名称,则无法访问该类别。不用再多说了,

function wpse_75604_check_rewrite_conflicts( $qv ) {
    if ( isset( $qv[\'name\'] ) ) {
        if ( ! get_page_by_path( $qv[\'name\'], OBJECT, \'post\' ) ) {
            $qv[\'category_name\'] = $qv[\'name\'];
            unset( $qv[\'name\'] );
        }
    }
    return $qv;
}
add_filter( \'request\', \'wpse_75604_check_rewrite_conflicts\' );

SO网友:Parham

我想你可以用这个答案this question 通过替换page_rewrite_rules 使用筛选post_rewrite_rules, 使重写后规则具有最高优先级。

结束

相关推荐

widgetlogic and permalinks

我试图使用widgetlogic在某些页面上有条件地显示菜单。每个菜单都使用如下标记is_page(array(\"Page Name\", \"Page Name 2\" ...)), 在我尝试更改permalinks之前,它一直工作得很好(因此所有菜单都会从各自的页面中消失)。我做错什么了吗?是否有解决方法?