我使用搜索结果并得到
$s = $_GET['s'];
哪个给出:“ mario”
现在在名为Mario Bianchi
的主要类别下有一个名为Persone
的类别
当我得到$s
时,我需要获取该类别中的所有帖子,我尝试了以下操作,但一无所获
$terms = get_terms( 'category', array(
'name__like' => $s,
'hide_empty' => true // Optional
) );
if ( count($terms) > 0 ){
echo '<ul>';
foreach ( $terms as $term ) {
echo '<li><a href="' . esc_url( get_term_link( $term ) ) . '" title="' . esc_attr( $term->name ) . '">' . esc_html( $term->name ) . '</a></li>';
}
echo '</ul>';
}
但是我需要附加实际的帖子,而不是类别本身
答案 0 :(得分:0)
get_terms
就是这样做的,它为您的查询提供了条件。您需要的是WP_Query
和tax_query
。您已经有了要为其返回帖子的类别,因此应该不太困难
$terms = get_terms( array(
'taxonomy' => 'category',
'name__like' => $s,
'hide_empty' => true // Optional
) );
$term_ids = array();
if ( ! empty( $terms ) ) {
foreach( $terms as $term ) {
$term_ids[] = $term->term_id;
}
$args = array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'category',
'terms' => $term_ids,
),
),
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
echo '<ul>';
while ( $query->have_posts() ) {
$query->the_post();
echo '<li><a href="' . esc_url( get_the_permalink() ) . '" title="' . get_the_title() . '">' . esc_html( get_the_title() ) . '</a></li>';
}
echo '</ul>';
}
wp_reset_postdata();
}