为WordPress默认搜索添加按文章/页面ID查询功能
以下是为WordPress添加ID搜索功能的完整PHP代码实现方案,可直接添加到主题的functions.php文件中或创建为自定义插件:add_id_search.php
<?php
/**
* Plugin Name: WordPress ID Search Extension
* Description: 为WordPress默认搜索添加按文章/页面ID查询功能
* Version: 1.0
* Author: Your Name
*/
// 修改主查询以支持ID搜索
function enhance_search_by_id($query) {
if (!is_admin() && $query->is_main_query() && $query->is_search()) {
$search_term = get_search_query();
// 检测是否纯数字ID搜索(如 #123)
if (preg_match('/^#?(\d+)$/', $search_term, $matches)) {
$post_id = intval($matches[1]);
$query->set('post__in', [$post_id]);
$query->set('s', ''); // 清空关键词搜索
}
}
return $query;
}
add_action('pre_get_posts', 'enhance_search_by_id');
// 在前端搜索框添加提示
function add_search_id_hint($form) {
return str_replace(
'</form>',
'<div class="search-hint">提示:输入#加ID可直接搜索指定内容(如#123)</div></form>',
$form
);
}
add_filter('get_search_form', 'add_search_id_hint');
// 添加样式
function id_search_styles() {
echo '<style>
.search-hint {
font-size: 0.8em;
color: #666;
margin-top: 5px;
}
</style>';
}
add_action('wp_head', 'id_search_styles');
该代码实现以下功能:
- 识别#+数字格式的搜索词(如#123或直接123)
- 自动转换为精确ID查询,绕过常规关键词搜索
- 保留原搜索功能的同时新增ID搜索特性
- 前端添加使用提示说明
- 包含简单样式优化提示文本显示
使用方法:将代码保存为插件文件上传激活,或直接添加到主题functions.php中。搜索时输入#加ID(如#42)即可直达指定内容。