搜索帖子类型的附件标题

时间:2013-06-07 作者:Salvatore Dibenedetto

我有一个页面,其中我在一个表中显示了页面的所有附件id=10.

我有数百个附件,我想实现一个AJAX搜索表单,它使用附件的标题作为搜索键。

实际上,问题不在于实现AJAX调用,而是返回附件列表的查询。

3 个回复
SO网友:Ravinder Kumar

您的查询可能如下

<?php
$args = array( \'post_type\' => \'attachment\', \'numberposts\' => -1, \'post_status\' =>\'any\', \'post_parent\' => 10 ); 
$attachments = get_posts($args);
if ($attachments) {
    foreach ( $attachments as $attachment ) {
        if(\'you title of image\'==$attachment->post_title ){
              //your code goes here
        }
    }
}
?>
Important Link:

get_posts()

Ajax Search Form

SO网友:Rohit Pande

您应该尝试应用s(搜索)作为自定义查询的参数。

请参见以下示例:

$query = new WP_Query( \'s=keyword\' );
然后可以应用普通循环来迭代结果。这还会执行与like运算符相同的字符串匹配%keyword% 您在评论中提到了@Ravs的答案。

参考文档here.

SO网友:s_ha_dum

WP_Query 默认情况下不会执行您想要的操作。如果您尝试搜索post_name 你会得到post_name= 过于严格的查询。如果您使用s 参数,您将获得%term% 搜索帖子名称和帖子内容,然后term 将匹配单词中的任何位置,而不仅仅是开头。这对于你所做的事情来说太宽泛了。和s 随着您添加条款,效率越来越低,尽管这可能不是您的问题。

如果键入“前n个”字母,则表示需要匹配,因此需要过滤查询。这应该可以做到。

function search_filter_right_wild($search) {
  remove_filter(\'posts_where\',\'search_filter_right_wild\');
  global $wpdb;
  $pattern = "|{$wpdb->posts}.post_name = \'([^\']*)\'|";
  $search = preg_replace($pattern,"{$wpdb->posts}.post_name LIKE \'$1%\'",$search);
  return $search;
}
add_filter(\'posts_where\',\'search_filter_right_wild\');

$q = new WP_Query( 
  array(
    \'name\' => \'test\',
    \'post_type\' => \'attachment\', 
    \'numberposts\' => -1, 
    \'post_status\' => \'inherit\'
  ) 
);
var_dump($q->request);
您只搜索帖子名称,过滤器会添加一个% 仅向右,因此通配符匹配仅在术语的右侧。

在查询之前在AJAX回调中添加过滤器,它将自动删除自身(尽管最后一部分可能不是必需的)。

结束

相关推荐

具有2个分类的侧边栏中的Advanced和Tax_Query

我有两种分类法:品牌和产品。在单侧栏中,我在侧栏中显示了帖子的品牌和产品,但我想显示当前分类术语品牌的所有其他产品。这是我将要尝试的,但我没有错误,它不会返回任何结果:<?php // get current taxonomy product term $post_product = get_the_term_list($post->ID, \'product\', \'\', \', \'); echo \'Product : \'.$post_marque;