我们知道默认的Wordpress 只检索文章和页面,不会检索其他比如用户,分类,标签之类的,对于一般博客来说只检索文章就足够了,甚至都是多余的。但是对于内容较多的站点,功能显示分类、标签、用户候选词这些功能就非常有用了。

WordPress有提供插件Search everything,这个插件我曾下载查看过代码,全是自己写的sql,其实Wordpress 很多参数都是带有参数的,我们直接调用相应函数即可。

具体效果大家可以亲自测试下,输入关键词后点击搜索,分类、标签、用户候选词即可进入搜索页面

WordPress代码实现增强搜索功能,分类、标签、用户候选词

下面给大家展示几个常用的,下列代码都需要在搜索模版,也就是.php中使用,get_search_query()可以获取到搜索关键字,如果你想在其他地方使用则search参数替换为其他即可。

分类搜索

<?php 
$arg = array('search'=>get_search_query());
$categories = get_categories($arg);
if(!empty($categories)){
    echo '<div class="tag-items">';
    foreach( $categories as $category ){
        echo '<a class="link" href="' . get_category_link( $category->term_id ) . '" title="Go to '.$category->name.' ">'.$category->name.' </a>';
    }
    echo '</div>';
}
?>

标签搜索

<?php
$arg = array('search'=>get_search_query());
$tags = get_tags($arg);
if(!empty($tags)){
    echo '<div class="tag-items">';
    foreach( $tags as $tag ){
        echo '
<a class="tag-item" title="浏览和' . $tag->name .'有关的文章" href="'. attribute_escape( get_tag_link( $tag->term_id ) ) .'">
<span>' . $tag->name .'</span>
</a>';
    }
    echo '</div>';
}
?>

用户搜索

<?php 
$arg = array('search'=>get_search_query());
$users = get_users($arg);
if(!empty($users)){
    foreach( $users as $user ){

    }
}
?>

搜索是非常耗费系统资源的,我前段时间因为收到CC攻击,只能关闭自带的搜索又重新谢了个带防CSRF的搜索,如果你的访问量非常多,服务器又不给力的话建议使用百度或者google的搜索。