我已设置自定义搜索以在网址上使用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),当我搜索“助手”时,帖子在转储中,但是当我搜索“厨房”时却没有。
非常感谢任何帮助。谢谢!
答案 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页上找到每个可能的搜索字词,以便将其与位置交叉引用,但它会在搜索查询结尾处对搜索结果进行“分页”。
感谢您的帮助!