// 完整移除分类URL中的category前缀,兼容一级/二级分类(修复后台访问问题) function custom_remove_category_base() { global $wp_rewrite; // 移除category前缀 $wp_rewrite->category_base = ''; // 重要:仅在手动触发时刷新规则(比如保存固定链接设置时),禁止频繁刷新 // 注释掉前台自动刷新的代码,避免规则混乱 // if ( ! is_admin() ) { // $wp_rewrite->flush_rules( false ); // } } add_action('init', 'custom_remove_category_base'); // 修复分类链接解析,适配二级分类(排除wp-admin/wp-login等后台路径) function custom_category_rewrite_rules($rules) { $new_rules = array(); // 关键修改:排除wp-admin、wp-login、wp-content、wp-includes等核心路径 // 正则解释:^(?!wp-admin|wp-login|wp-content|wp-includes|wp-json|xmlrpc.php)([^/]+)/?$ // 意思是:不以wp-admin等开头的单级路径,才匹配分类规则 $new_rules['^(?!wp-admin|wp-login|wp-content|wp-includes|wp-json|xmlrpc.php)([^/]+)/?$'] = 'index.php?category_name=$matches[1]'; // 二级分类同样排除核心路径 $new_rules['^(?!wp-admin|wp-login|wp-content|wp-includes|wp-json|xmlrpc.php)([^/]+)/([^/]+)/?$'] = 'index.php?category_name=$matches[1]/$matches[2]'; return $new_rules + $rules; } add_filter('category_rewrite_rules', 'custom_category_rewrite_rules'); // 修复分类链接生成,确保二级分类URL正确(保留原有逻辑,增加容错) function custom_category_link($link, $term) { if (isset($term->taxonomy) && $term->taxonomy === 'category') { $link = home_url('/' . $term->slug); // 如果是二级分类,拼接父分类别名 if ($term->parent) { $parent = get_term($term->parent, 'category'); if ( ! is_wp_error( $parent ) ) { // 增加容错,避免父分类不存在报错 $link = home_url('/' . $parent->slug . '/' . $term->slug); } } } return $link; } add_filter('term_link', 'custom_category_link', 10, 2);