您好我需要按类别ID获取帖子类型的结果,并使用like运算符发布标题。
例如
Category name : Sports
Post name : Basketball , hockey , volley ball
从下面的查询我得到帖子名称及其ID,我将它们传递给get post查询,但查询返回该类别中的所有帖子
假设我在该类别中搜索排球,我得到的所有结果我只需要输出中的排球。
请参阅下面的我的代码
$ mypostids_title = $ wpdb-> get_col("从$ wpdb->中选择ID,其中post_title喜欢'%$ title%'");
$args_sby= array(
'post_type' => 'campaign',
'post_status' => 'publish',
'posts_per_page' => -1,
'post__in' => $mypostids_title,
'tax_query' => array(
array(
'taxonomy' => 'campaign_category',
'field' => 'term_id',
'terms' => $_GET['c'],
'operator' => 'AND',
)
),
);
$posts = get_posts($args_sby);
我从上面的选择查询得到了一个post id数组,我在get post查询参数中传递它们,我只得到分类法的结果,但我需要通过分类法和post id得到结果,请让我知道怎么解决这个问题。 提前谢谢。
答案 0 :(得分:1)
$custom_terms = get_terms('custom_taxonomy');
foreach($custom_terms as $custom_term) {
wp_reset_query();
$args = array('post_type' => 'custom_post_type',
'tax_query' => array(
array(
'taxonomy' => 'custom_taxonomy',
'field' => 'slug',
'terms' => $custom_term->slug,
),
),
);
$loop = new WP_Query($args);
if($loop->have_posts()) {
echo '<h2>'.$custom_term->name.'</h2>';
while($loop->have_posts()) : $loop->the_post();
echo '<a href="'.get_permalink().'">'.get_the_title().'</a><br>';
endwhile;
}
你可以试试这段代码
答案 1 :(得分:1)
尝试下面的代码,它可能会有所帮助。您可以直接在query_posts中传递搜索关键字和类别。
$args_sby= array(
'post_type' => 'campaign',
'post_status' => 'publish',
'posts_per_page' => -1,
's' => $keywords,
'taxonomy' => 'campaign_category',
'term' => 'yourterm'
);
$posts = query_posts($args_sby);
查找与参数相关的帮助here
答案 2 :(得分:1)
试试这个。它可能对你有帮助。
$args_sby= array(
'post_type' => 'campaign',
'post_status' => 'publish',
'posts_per_page' => -1,
'post_title' => $title,
'tax_query' => array(
array(
'taxonomy' => 'campaign_category',
'field' => 'term_slug',
'terms' => $_GET['c'],
'operator' => 'AND',
)
),
);
$posts = get_posts($args_sby);
在此之后,请将以下代码放在主题的function.php文件中。
//Filter for post title.
function title_filter( $where, &$wp_query ){
global $wpdb;
if ( $search_term = $wp_query->get( 'post_title' ) ) {
$where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'%' . $wpdb->esc_like( $search_term) . '%\'';
}
return $where;
}
add_filter( 'posts_where', 'title_filter', 10, 2 );