我假设,它应该像使用一样 税收中category_name或category_in运算符的LIKE子句 查询。
$args = get_posts(array( 'fields' => 'ids', 'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => -1, 's' => $_REQUEST['s'] ? $_REQUEST['s'] : '' , 'tax_query' => array( array( 'taxonomy' => 'NAME OF TAXONOMY', 'field' => 'slug', 'terms' => 'SLUG OF the TERM', // LIKE (here should be any LIKE clause etc) ), ) ));
如何实现这种情况,意味着当用户输入与类别名称匹配的任何关键字时,它应该从该类别中提取所有结果以及常规搜索结果。
示例:在搜索栏中,用户会写“ ABC ”,并且可以使用名称为“ ABC Park ”的类别,然后它应该拉此类别的结果以及包含“ABC”的帖子标题和内容的结果。
答案 0 :(得分:3)
好的......我想出了一个解决方案,我使用LIKE查询从表terms
中获取了所有类别ID,然后在其他查询中将此数组作为类别参数传递。这是代码。
$term_ids=array();
$cat_Args="SELECT * FROM $wpdb->terms WHERE name LIKE '%".$_REQUEST['s']."%' ";
$cats = $wpdb->get_results($cat_Args, OBJECT);
array_push($term_ids,$cats[0]->term_id);
$q1 = get_posts(array(
'fields' => 'ids',
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
's' => $_REQUEST['s'] ? $_REQUEST['s'] : ''
));
$q2 = get_posts(array(
'fields' => 'ids',
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'category' =>$term_ids
));
$unique = array_unique( array_merge( $q1, $q2 ) );
$posts = get_posts(array(
'post_type' => 'post',
'post__in' => $unique,
'posts_per_page' => -1
));
if ($posts ) :
foreach( $posts as $post ) :
//show results
endforeach;
endif;
但是我想要一种更简洁,更精确的方式。 :)