尝试进行某种“高级搜索”我找到了这段代码:
function custom_search_where($pieces) {
// filter to select search query
if (is_search() && !is_admin()) {
global $wpdb;
$custom_fields = array('ISBN','Edicion');
$keywords = explode(' ', get_query_var('s'));
$query = "";
foreach ($custom_fields as $field) {
foreach ($keywords as $word) {
$query .= "((mypm1.meta_key = '".$field."')";
$query .= " AND (mypm1.meta_value LIKE '%{$word}%')) OR ";
}
}
if (!empty($query)) {
// add to where clause
$pieces['where'] = str_replace("(((wp_posts.post_title LIKE '%", "( {$query}
((wp_posts.post_title LIKE '%", $pieces['where']);
$pieces['join'] = $pieces['join'] . " INNER JOIN {$wpdb->postmeta} AS mypm1 ON
({$wpdb->posts}.ID = mypm1.post_id)";
}
}
return ($pieces);
}
add_filter('posts_clauses', 'custom_search_where');
在显示我的自定义字段(单词和数字,我需要)的意义上工作正常,并允许我进行交叉搜索:我做了一个自定义搜索表单,其中的想法是按版本,标题,名称,数字,选集和部分。版本是自定义帖子类型(工作正常),标题,名称和数字是自定义字段(使用此脚本也可以正常工作),部分和coleccion是通过选择显示的分类法(工作正常)
问题是: 如果我搜索一个数字(书中的代码)显示帖子,只有一个,正常;但如果我搜索一个单词(书名或书名),它会显示很多帖子(10个或更多) 我是wordpress和代码的新手,所以我需要一些帮助来解决它:我需要在代码中更改为正常显示我的搜索(只显示一个,没有重复)
我知道有很多代码,我已经测试过了,但是对于我的搜索表单,这是一个相对较好的代码,除了重复项。
答案 0 :(得分:1)
经过一段时间的寻找,今天,我在下一个链接中找到了答案(代码与之前的代码相同,但为了避免重复而包含在内) 工作正常。
如果有人遇到同样的问题,我希望会有用。