我已将永久链接设置为自定义结构:
/%menutype%/%postname%/
这适用于我的自定义分类法(menutype)和任何存档。
然而,现在简单的页面不起作用,即。
index.php?page_id=32 -> 404!
或
/about/ ->404
以下是我的自定义重写规则,“menu”是我的自定义帖子,“menutype”是我的自定义分类法:
function custom_rewrite( $wp_rewrite ) {
$feed_rules = array(
\'menu/[a-z]+/(.+)\' => \'index.php?menu=\' . $wp_rewrite->preg_index(1),
\'menu/([^/]+)(/[0-9]+)?/?$\' => \'index.php?menutype=\' . $wp_rewrite->preg_index(1),
\'/(.+)/\' => \'index.php?page_id=\' . $wp_rewrite->preg_index(1),
);
$wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}
// refresh/flush permalinks in the dashboard if this is changed in any way
add_filter( \'generate_rewrite_rules\', \'custom_rewrite\' );
SO网友:Tom J Nowell
您需要使用自定义重写规则为menutype设置永久链接。您所做的是将menutype前缀应用于所有内容,即使menutype与所有内容都不相关,因此有些内容被误解了。
您将需要类似的内容:
function custom_rewrite( $wp_rewrite ) {
$feed_rules = array(
\'([^/]+)(/[0-9]+)?/?$\' => \'index.php?menu_type=\'. $wp_rewrite->preg_index(1).\'&post_name=\'. $wp_rewrite->preg_index(2)
);
$wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}
// refresh/flush permalinks in the dashboard if this is changed in any way
add_filter( \'generate_rewrite_rules\', \'custom_rewrite\' );
但是,我建议您事先添加前缀,如“menus”等,以防止与现有重写规则发生进一步冲突。
使用monkeyman rewrite Analyzer工具插件测试您制定/更改/编辑的任何重写规则,方法是输入URL并查看哪些规则被激活以及以何种顺序激活。