wordpress搜索功能可不可以只搜索字段

我一个客户想做一个企业网站,要求在网站上加上一个在线查询产品真伪功能。我想用搜索功能来实现,就是发表文章的时候,每篇文章都加入一个字段,这个字段内容用来添加产品编号。然后... 我一个客户想做一个企业网站,要求在网站上加上一个在线查询产品真伪功能。我想用搜索功能来实现,就是发表文章的时候,每篇文章都加入一个字段,这个字段内容用来添加产品编号。然后搜索的时候就只搜索这个字段,如果输入的内容可以在字段中查找到就显示为正品,如果找不到就显示为伪品。这种搜索方法可不可以实现?还有,如果可以实现,那能不能实现绝对匹配,比如输入的是123456789这个编号,只有符合123456789这个内容才显示为正品。只包含一部分(如如123、456、789等)都判定为没有搜索到。这种方法可不可以实现?谢谢! 展开
 我来答
等待放飞梦想
2013-10-29 · TA获得超过1175个赞
知道小有建树答主
回答量:1696
采纳率:16%
帮助的人:716万
展开全部
搜索字段可以的。完全匹配原理上也是可以的。我没做完。不过要做也比较复杂。说下思路。

先说字段吧。这个要放弃默认的搜索。要自建一个表单。然后定义一个query 来查询相应的字段。

匹配这个就复杂了点。通过上面的查询后。把结果的文章ID。写到一个数组里。然后再那查这个ID的字段名称。把结果和搜索的字段做对面。如果相等。返回正品。如果不相等。就不是正品
naruco
2013-11-07 · TA获得超过639个赞
知道小有建树答主
回答量:807
采纳率:50%
帮助的人:535万
展开全部

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;
}


以上代码未经过实地测试,大概方法是我参考官方文档和以前回答的问题写的。

你若测试有问题或测试通过,可回到这里分享一下。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
慢熊珠海网站建设
2013-10-29 · 超过23用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:41.2万
展开全部
在搜索时候默认在搜索词上面多加一个引号。我没试验过,但是目前各大搜索引擎都是这样做的。希望对你哟点滴帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式