如何让wp_dropdown_categories提交表单后保留选中值?
解决wp_dropdown_categories提交表单后保留选中值的问题
很简单,你只需要给wp_dropdown_categories()添加selected参数,绑定用户提交的分类ID就能实现这个需求。下面是具体的修改步骤:
修改表单代码
把你原来的wp_dropdown_categories调用改成数组参数形式(比字符串参数更易维护),同时传入从$_GET获取到的选中ID:
<form method="get" action="#anchor" id="findresult"> <?php // 安全获取提交的分类ID,未提交时默认0 $selected_location = isset($_GET['location']) ? intval($_GET['location']) : 0; wp_dropdown_categories([ 'name' => 'location', 'child_of' => 2, 'selected' => $selected_location // 关键:设置选中项 ]); ?> <input id="submit" type="submit" value="SEARCH"/> </form>
代码说明
- 用
isset()判断$_GET['location']是否存在,避免页面首次加载时出现PHP Notice错误;intval()确保值为整数,防止恶意输入。 - WordPress的
wp_dropdown_categories函数会自动识别selected参数,将对应ID的分类选项设为选中状态,完全不需要手动拼接HTML。
优化你的分类名称获取代码
你之前的代码可以做个小优化,避免无效ID导致的错误,同时添加安全转义:
<?php $locid = isset($_GET['location']) ? intval($_GET['location']) : 0; // 只有ID有效时才获取分类名称 $locname = $locid ? get_cat_name($locid) : ''; ?> <h1><?php echo esc_html($locname); ?></h1>
这里的esc_html()是WordPress开发的最佳实践,用来转义输出内容,防止XSS攻击。
内容的提问来源于stack exchange,提问作者Johnny
相关产品推荐
相关产品推荐

