WordPress中Web Stories分类链接失效,跳转404页面求助
解决Web Stories分类下拉跳转404的问题
问题根源
你当前的代码用表单GET提交默认分类参数cat,但web_story_category是自定义分类法,WordPress无法识别这个参数对应的归档页面,导致跳转404。另外,下拉菜单的option值是分类ID,而非正确的归档URL或自定义分类查询参数。
解决方案一:直接跳转至分类归档URL(推荐)
修改代码,让下拉选项的value直接对应分类的归档链接,通过JS点击后跳转,无需表单提交:
<?php // 生成分类下拉菜单 $select = wp_dropdown_categories(array( 'show_option_none' => 'Select Category', 'show_count' => 1, 'orderby' => 'name', 'taxonomy' => 'web_story_category', 'echo' => 0, 'selected' => 6 )); // 替换option的value为分类归档URL $select = preg_replace_callback('#<option value="(\d+)"#', function($matches) { $term = get_term_by('id', $matches[1], 'web_story_category'); return $term ? '<option value="' . esc_url(get_term_link($term)) . '"' : $matches[0]; }, $select); // 添加onchange跳转事件 $select = preg_replace('#<select([^>]*)>#', '<select$1 onchange="if(this.value) window.location.href=this.value;">', $select); echo $select; ?>
解决方案二:调整表单查询参数适配自定义分类
如果坚持用表单提交,需要添加正确的自定义分类查询参数,让WordPress识别:
<form action="<?php echo esc_url(home_url('/')); ?>" method="get"> <!-- 隐藏字段指定自定义分类法和文章类型 --> <input type="hidden" name="taxonomy" value="web_story_category"> <input type="hidden" name="post_type" value="web_story"> <!-- 替换为你的Web Stories自定义文章类型slug --> <?php $select = wp_dropdown_categories(array( 'show_option_none' => 'Select Category', 'show_count' => 1, 'orderby' => 'name', 'taxonomy' => 'web_story_category', 'echo' => 0, 'selected' => 6, 'name' => 'term' // 对应分类slug的参数名 )); $select = preg_replace('#<select([^>]*)>#', '<select$1 onchange="return this.form.submit();">', $select); echo $select; ?> </form>
关键后续步骤
- 刷新固定链接规则:进入WordPress后台 → 设置 → 固定链接,直接点击「保存更改」(无需修改任何设置),让WordPress刷新重写规则,确保自定义分类归档URL生效。
- 验证分类归档可用性:手动访问
你的域名/web_story_category/分类slug/,确认页面能正常打开。如果还是404,检查自定义分类法和Web Stories文章类型的注册代码,确保两者已关联。
内容的提问来源于stack exchange,提问作者Lalitha T
相关产品推荐
相关产品推荐

