自定义搜索和代码问题

时间:2014-01-09 23:00:27

标签: php wordpress custom-fields

尝试进行某种“高级搜索”我找到了这段代码:

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和代码的新手,所以我需要一些帮助来解决它:我需要在代码中更改为正常显示我的搜索(只显示一个,没有重复)

我知道有很多代码,我已经测试过了,但是对于我的搜索表单,这是一个相对较好的代码,除了重复项。

1 个答案:

答案 0 :(得分:1)

经过一段时间的寻找,今天,我在下一个链接中找到了答案(代码与之前的代码相同,但为了避免重复而包含在内) 工作正常。

http://pastebin.com/seNZYDSJ

如果有人遇到同样的问题,我希望会有用。