我有一个页面,其中我在一个表中显示了页面的所有附件id=10
.
我有数百个附件,我想实现一个AJAX搜索表单,它使用附件的标题作为搜索键。
实际上,问题不在于实现AJAX调用,而是返回附件列表的查询。
我有一个页面,其中我在一个表中显示了页面的所有附件id=10
.
我有数百个附件,我想实现一个AJAX搜索表单,它使用附件的标题作为搜索键。
实际上,问题不在于实现AJAX调用,而是返回附件列表的查询。
您的查询可能如下
<?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:您应该尝试应用s
(搜索)作为自定义查询的参数。
请参见以下示例:
$query = new WP_Query( \'s=keyword\' );
然后可以应用普通循环来迭代结果。这还会执行与like运算符相同的字符串匹配%keyword%
您在评论中提到了@Ravs的答案。参考文档here.
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回调中添加过滤器,它将自动删除自身(尽管最后一部分可能不是必需的)。
我有两种分类法:品牌和产品。在单侧栏中,我在侧栏中显示了帖子的品牌和产品,但我想显示当前分类术语品牌的所有其他产品。这是我将要尝试的,但我没有错误,它不会返回任何结果:<?php // get current taxonomy product term $post_product = get_the_term_list($post->ID, \'product\', \'\', \', \'); echo \'Product : \'.$post_marque;