自定义重写规则在通用类别规则之后发生

时间:2011-09-30 作者:Robert K

我已经定义了一个自定义的职位类型来处理公司的分销商。它把一根柱子放在下面/distributors/abc-truck-sales. 我注意到装载/distributors/ 匹配到一个category\\u名称,并按此进行查询。

我有一个自定义重写规则supposed 制作/distributors/ 重定向到索引。php

add_rewrite_rule(\'distributors/?$\', \'index.php?show=all&post_type=distributor\', \'top\');
此规则已正确添加到重写规则中\'(.+?)/?$\' => \'category_name=distributors\', 总是先匹配!

如何防止类别视图?Unset it?

更新1:

更改permalink类别和标记基础没有任何效果。当然,除了路径前缀。如果我加载/distributors/ 它仍然假设它是一个类别(我可以将其更改为任何旧类别,它将加载它)。

1 个回复
SO网友:Robert K

我自己想出的答案我知道是个很糟糕的主意。但它是有效的,我必须有一个有效的解决方案。(并不意味着我以后不能解决问题…)

add_filter(\'rewrite_rules_array\', \'terminate_with_prejudice\');
function terminate_with_prejudice($rules) {
  // if we don\'t remove this we\'ll never see our custom rule.
  unset($rules[\'(.+?)/?$\']);

  $rules = array_merge(array(
    \'distributors/?$\' => \'index.php?show=all&post_type=distributor\',
    \'((?!distributor)([^/]*?))/?$\' => \'index.php?category_name=$matches[1]\',
  ), $rules);

  return $rules;
}
这样做的目的是将默认规则设置为与非“分发服务器”的内容匹配,并且在斜杠之前有一个部分。

我只是希望没有其他插件/主题可以做到这一点!

编辑:

这会破坏查看页面的能力。太棒了

伙计们,我真的需要一些帮助。

结束

相关推荐