我有一个wordpress网站,从url中删除了类别库。
现在,当一个类别有一个类似于后期slug的slug时,就会显示该类别。
我想展示一下帖子。这可能吗?
谢谢
我有一个wordpress网站,从url中删除了类别库。
现在,当一个类别有一个类似于后期slug的slug时,就会显示该类别。
我想展示一下帖子。这可能吗?
谢谢
没有一个干净的方法来满足你的要求。您希望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\' );
我想你可以用这个答案this question 通过替换page_rewrite_rules
使用筛选post_rewrite_rules
, 使重写后规则具有最高优先级。
我试图使用widgetlogic在某些页面上有条件地显示菜单。每个菜单都使用如下标记is_page(array(\"Page Name\", \"Page Name 2\" ...)), 在我尝试更改permalinks之前,它一直工作得很好(因此所有菜单都会从各自的页面中消失)。我做错什么了吗?是否有解决方法?