如何在类别名称中搜索字符串?

时间:2018-11-15 01:48:29

标签: php wordpress

我使用搜索结果并得到

$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>';
}

但是我需要附加实际的帖子,而不是类别本身

1 个答案:

答案 0 :(得分:0)

get_terms就是这样做的,它为您的查询提供了条件。您需要的是WP_Querytax_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();

}