wordpress搜索功能可不可以只搜索字段
我一个客户想做一个企业网站,要求在网站上加上一个在线查询产品真伪功能。我想用搜索功能来实现,就是发表文章的时候,每篇文章都加入一个字段,这个字段内容用来添加产品编号。然后...
我一个客户想做一个企业网站,要求在网站上加上一个在线查询产品真伪功能。我想用搜索功能来实现,就是发表文章的时候,每篇文章都加入一个字段,这个字段内容用来添加产品编号。然后搜索的时候就只搜索这个字段,如果输入的内容可以在字段中查找到就显示为正品,如果找不到就显示为伪品。这种搜索方法可不可以实现?还有,如果可以实现,那能不能实现绝对匹配,比如输入的是123456789这个编号,只有符合123456789这个内容才显示为正品。只包含一部分(如如123、456、789等)都判定为没有搜索到。这种方法可不可以实现?谢谢!
展开
3个回答
展开全部
http://zhidao.baidu.com/question/871353190867198172.html?oldq=1
我在这篇文章里,有回答过关于自定义字段的查询功能。你可以借鉴。
当然,这只是告诉你程序端查询的方法,如何解决表单搜索,还需要进一步处理。
首先,建一个自已的搜索表单,比如:
<form role="search" method="get" id="searchform" action="' . esc_url( home_url( '/' ) ) . '" >
<div>
<label class="screen-reader-text" for="s">' . __('Search for:') . '</label>
<input type="text" value="' . get_search_query() . '" name="s" id="s" />
<input type="submit" id="searchsubmit" value="'. esc_attr__('Search') .'" />
</div>
</form>
这个表单是默认的搜索表单,为了实现自定义字段的搜索,需要增加相关标识
比如添加:
<input type="hidden" name="product_verification" value="true" />
到此表单内容完成,然后需要在functions.php中处理搜索过程,需要向posts_search和posts_join和posts_where这3个hooks添加相关内容。
大概代码:
if ( is_search() && isset( $__GET['product_verification'] ) && $__GET['product_verification'] ){
add_filter( 'posts_search', 'my_search_query' );
add_filter( 'posts_join', 'my_search_join' );
add_filter( 'posts_where', 'my_search_where' );
}
function my_search_query( $search ) {
//这里获取用户输入的查询关键词,不是用来匹配post_title或post_content
//所以这里由系统产生的搜索语句,就可以不需要了。
return null;
}
function my_search_join( $join ){
global $wpdb;
$join .= " INNER JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) ";
return $join;
}
function my_search_where( $where ){
$value = get_query_var('s');
$where .= " AND ( ($wpdb->postmeta.meta_key = '这里指定你的自定义字段名' AND $wpdb->postmeta.meta_value = $value ) )";
return $where;
}
以上代码未经过实地测试,大概方法是我参考官方文档和以前回答的问题写的。
你若测试有问题或测试通过,可回到这里分享一下。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在搜索时候默认在搜索词上面多加一个引号。我没试验过,但是目前各大搜索引擎都是这样做的。希望对你哟点滴帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询