自定义和扩展WordPress搜索功能
来源:互联网 发布:大势至usb端口 编辑:程序博客网 时间:2024/04/27 10:12
今天在做一个WordPress项目的时候,客户要求对wordpress默认的搜索功能进行修改,要求按照作者,按照文章标题,以及按照文章内容,这三个条件进行搜索。实现起来也比较简单,为了防止以后会用到所以来总结一下。
添加好之后,你需要创建一个search.php文件出来,用来显示搜索内容,如果不创建它会在index.php里面显示,不过建议大家创建出来便于自己定义。创建好之后就可以在里面添加显示代码。默认的显示方法是
如果你想自己定义搜索显示内容,不使用默认显示方法。下面是磊子自己简单写了一段。
首先说下添加的方法,一是自己创建一个搜索框出来,二是使用wordpress默认的搜索框。代码如下:
<?php get_search_form(); ?> //直接使用默认搜索框放到你需要显示的地方即可<form method="get" id="searchform" action="<?php echo $_SERVER['PHP_SELF']; ?>"><input name="s" id="s" type="text" class="text" /><input id="searchsubmit" type="submit" class="submit" value=" " /></form>//自己手动创建,需要注意的是里面的name="s" id="s" 这个是必须有的,而且是不能改的。//如果改了的话wordpress就获取不到你要搜索的内容了。
添加好之后,你需要创建一个search.php文件出来,用来显示搜索内容,如果不创建它会在index.php里面显示,不过建议大家创建出来便于自己定义。创建好之后就可以在里面添加显示代码。默认的显示方法是
<?php if ( have_posts() ) : ?><?php while ( have_posts() ) : the_post(); ?><div><a href="<?php echo get_permalink($post->ID); ?>"><?php the_title(); ?></a></div><?php endwhile; ?><?php else : ?><article><header class="entry-header"><h1 class="entry-title"><?php _e( '没有找到该文章', 'leizi' ); ?></h1></header><div class="entry-content"><p><?php _e( '抱歉没有找到该文章', 'leizi' ); ?></p><?php get_search_form(); ?></div></article><?php endif; ?>
如果你想自己定义搜索显示内容,不使用默认显示方法。下面是磊子自己简单写了一段。
<form method="get" id="searchform" action="<?php bloginfo('home'); ?>"><div style=""><input name="s" id="s" type="text" /></div><div style="width:55px;"><input id="searchsubmit" type="submit" value=" " /></div><div></div><div><label><input value="title" name="sosearch" type="radio" checked="checked" />按标题</label> <label><input value="users" name="sosearch" type="radio" />按作者</label> <label><input value="posts" name="sosearch" type="radio" />按全文</label></div></form>//上面这一段放到需要显示的地方。下面这一段是放在search.php文件里面<?php$resault = $_GET['s']; //获取搜索内容$tiaoj = $_GET['sosearch']; //获取搜索条件,上面写到按照标题,作者,全文if($tiaoj == "users"){ //通过搜索条件来判断显示的内容,第一个是按文章作者搜索显示 $user_info = $wpdb->get_results("SELECT * FROM $wpdb->users WHERE display_name like '%".$resault."%'");if(!empty($user_info)){foreach($user_info as $key => $val){$posts_info = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'post' and post_status = 'publish' and post_author = '".$val->ID."'");foreach($posts_info as $k=>$v){?> <li><span><?php the_time('Y-m-d'); ?></span><a href="<?php echo get_permalink($v->ID); ?>"><?php echo $v->post_title; ?></a></li><?php}}}else{echo "<li>抱歉,没有找到符合搜索条件的内容!</li>";}}elseif($tiaoj == "title"){ //按照文章标题进行显示$posts_info = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'post' and post_status = 'publish' and post_title like '%".$resault."%'");if(!empty($posts_info)){foreach($posts_info as $k=>$v){?> <li><span><?php the_time('Y-m-d'); ?></span><a href="<?php echo get_permalink($v->ID); ?>"><?php echo $v->post_title; ?></a></li><?php}}else{echo "<li>抱歉,没有找到符合搜索条件的内容!</li>";}}elseif($tiaoj == "posts"){ //按照文章内容进行显示$posts_info = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'post' and post_status = 'publish' and post_content like '%".$resault."%'");if(!empty($posts_info)){foreach($posts_info as $k=>$v){?> <li><span><?php the_time('Y-m-d'); ?></span><a href="<?php echo get_permalink($v->ID); ?>"><?php echo $v->post_title; ?></a></li><?php}}else{echo "<li>抱歉,没有找到符合搜索条件的内容!</li>";}}
大概效果如下:
以上就是磊子通过使用数据库语句进行模糊搜索然后按照条件来进行显示。不过这里还需要一些改进的地方,比如添加分页,还有就是其他更简单的方法,这个需要大家集思广益,提出更好的方法和建议,当然了插件就不需要啦,呵呵! 0 0
- 自定义和扩展WordPress搜索功能
- wordpress自定义搜索
- WordPress 自定义搜索框
- WordPress文本编辑器自定义功能
- 自定义标签功能扩展
- openstack 扩展自定义功能
- 自定义标签功能扩展
- 自定义搜索功能
- 自定义和扩展 SharePoint 2010 Server 功能区
- WordPress 自定义分类功能 - 分类/Tag
- 向数据访问页添加自定义筛选和搜索功能
- Yii2-GridView 自定义关联字段带搜索和排序功能
- 3.自定义标签功能扩展
- 给OpenStack扩展自定义功能
- 自定义js扩展DOM功能
- 给OpenStack扩展自定义功能
- 融云自定义扩展功能
- 为 WordPress 分类目录添加个性化图像功能扩展
- 大学自学编程推荐阅读书籍和参考学习顺序
- Jenkins + python(requests)做接口自动化测试
- 黑马程序员-----java基础概述之关键字、运算符
- 启动Service并用Intent传递数据
- [游戏技术]求生之路服务器指令
- 自定义和扩展WordPress搜索功能
- C++中的IO类(iostream, fstream, stringstream)小结
- Android 学习笔记之界面布局
- POI刷新数据后的函数(公式)更新问题
- IOS开发UI篇--使用UICollectionView实现一个无限轮播的案例
- Windows Python 27 64 位配置LibSvm接口
- [BAT]批处理修改IP地址
- simpleXML
- JavaScript加载XML文件的两种方式