自定义WordPress搜索与结果不一致

时间:2014-04-16 04:27:52

标签: php wordpress

我已设置自定义搜索以在网址上使用s GET变量。我希望它能获得某些结果,但我遇到了一个奇怪的问题。首先,这是我的代码:

$search_term = $_GET['s'];

if($search_term!=''){
    $s = new WP_Query(array('s' => $search_term));
    $search_array = array();

    if($s->have_posts()){
        while($s->have_posts()){
            $s->the_post();

            $title = get_the_title();
            $permalink = get_permalink();
            $search_identifier = $title.$permalink;

            array_push($search_array,$search_identifier);
        }
    }
}

基本上,我正在为每个帖子创建一个唯一值数组,因为我需要在此之后立即将它们用于函数。

我有一篇名为“厨房助理”的帖子。当我搜索“厨房”时,它会显示出来。当我搜索“助手”时,它没有出现。

我在标题和内容中有其他帖子,其中包含“助手”字样,当我搜索“助手”时,这些帖子会显示出来。我很好奇为什么它会出现一个搜索词而不是另一个呢?

我使用了var_dump($ s),当我搜索“助手”时,帖子在转储中,但是当我搜索“厨房”时却没有。

非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个。

$search_term = $_GET['s'];
if(!empty($search_term)){

    $args = array(
        'post_type' => 'post',
        'meta_query' => array(
            'key' => 'title',
            'value' => $search_term,
            'compare' => 'LIKE'
        )
    );

    $s = new WP_Query($args);
    $search_array = array();

    if($s->have_posts()){
        while($s->have_posts()){
            $s->the_post();

            $title = get_the_title();
            $permalink = get_permalink();
            $search_identifier = $title.$permalink;

            array_push($search_array,$search_identifier);
        }
    }

}

答案 1 :(得分:0)

我找到了自己问题的答案(最后!)。我正在使用NineToFive模板,我猜默认情况下,返回的搜索结果数量有限制(我不确定这是否是WordPress的默认值;也许有人可以澄清这一点。)

我将查询更改为:

$s = new WP_Query(array('s' => $search_term, 'posts_per_page' => -1));

不对搜索结果设置限制并更改了搜索结果。我需要在第1页上找到每个可能的搜索字词,以便将其与位置交叉引用,但它会在搜索查询结尾处对搜索结果进行“分页”。

感谢您的帮助!