我之前问过并回答了自己关于定制搜索的问题。你可以在这里找到答案:The right way to create a custom search page for complex custom post types. 这将是一本很好的读物,可以帮助您理解以下代码。
我会用pre_get_posts
搜索正整数时更改搜索的操作。请注意,我提供的代码不允许您在文章中搜索正整数。
function my_search_pre_get_posts($query)
{
// Verify that we are on the search page that that this came from the event search form
if($query->query_vars[\'s\'] != \'\' && is_search())
{
// If "s" is a positive integer, assume post id search and change the search variables
if(absint($query->query_vars[\'s\']))
{
// Set the post id value
$query->set(\'p\', $query->query_vars[\'s\']);
// Reset the search value
$query->set(\'s\', \'\');
}
}
}
// Filter the search page
add_filter(\'pre_get_posts\', \'my_search_pre_get_posts\');
如果您希望能够搜索ID和搜索字符串,我建议您包含多个输入。您还可以在提供的函数中使用其他逻辑来假设用户正在查找什么,并相应地更改查询变量。
请注意,此代码未经测试。