如何限制自定义帖子类别

时间:2017-07-10 作者:Shiva

<?php
    $term_id =182;
    $taxonomy_name = \'geram_category\';
    $term_children = get_term_children( $term_id, $taxonomy_name );

    foreach ( $term_children as $child ) {
        $term = get_term_by( \'id\', $child, $taxonomy_name);
        echo \'<li><a href="\' . get_term_link( $child, $taxonomy_name ) . \'">\' . $term->name . \'</a></li>\';
   }

?>                       
这是一个很好的工作,但我只想5类,

1 个回复
最合适的回答,由SO网友:dbeja 整理而成

使用array_slice 并获取数组的前5个元素:

<?php
    $term_id =182;
    $taxonomy_name = \'geram_category\';
    $term_children = get_term_children( $term_id, $taxonomy_name );
    $term_children = array_slice( $term_children, 0, 5, true );

    foreach ( $term_children as $child ) {
        $term = get_term_by( \'id\', $child, $taxonomy_name);
        echo \'<li><a href="\' . get_term_link( $child, $taxonomy_name ) . \'">\' . $term->name . \'</a></li>\';
   }
?>
如果只想获取前5个子术语中的帖子,可以通过对每个术语使用WP\\u查询来筛选数组,以检查该术语是否有帖子:

<?php
    $term_id =182;
    $taxonomy_name = \'geram_category\';
    $term_children = get_term_children( $term_id, $taxonomy_name );

    $term_children = array_filter( $term_children, function( $term_id ) {
        $args = array(
            \'post_type\' => \'spanish\',
            \'posts_per_page\' => 1,
            \'tax_query\' => array(
                array(
                    \'taxonomy\' => \'geram_category\',
                    \'field\'    => \'term_id\',
                    \'terms\'    => $term_id,
                ),
            ),
        );
        $query = new WP_Query( $args );
        if( $query->found_posts ) {
            return true;
        } else {
            return false;
        }
    });

    $term_children = array_slice( $term_children, 0, 5, true );

    foreach ( $term_children as $child ) {
        $term = get_term_by( \'id\', $child, $taxonomy_name);
        echo \'<li><a href="\' . get_term_link( $child, $taxonomy_name ) . \'">\' . $term->name . \'</a></li>\';
   }
?>

结束

相关推荐