搜索字段可以的。完全匹配原理上也是可以的。我没做完。不过要做也比较复杂。说下思路。
先说字段吧。这个要放弃默认的搜索。要自建一个表单。然后定义一个query 来查询相应的字段。
匹配这个就复杂了点。通过上面的查询后。把结果的文章ID。写到一个数组里。然后再那查这个ID的字段名称。把结果和搜索的字段做对面。如果相等。返回正品。如果不相等。就不是正品
http://zhidao.baidu.com/question/871353190867198172.html?oldq=1
我在这篇文章里,有回答过关于自定义字段的查询功能。你可以借鉴。
当然,这只是告诉你程序端查询的方法,如何解决表单搜索,还需要进一步处理。
首先,建一个自已的搜索表单,比如:
这个表单是默认的搜索表单,为了实现自定义字段的搜索,需要增加相关标识
比如添加:
到此表单内容完成,然后需要在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;
}
以上代码未经过实地测试,大概方法是我参考官方文档和以前回答的问题写的。
你若测试有问题或测试通过,可回到这里分享一下。
在搜索时候默认在搜索词上面多加一个引号。我没试验过,但是目前各大搜索引擎都是这样做的。希望对你哟点滴帮助