2016-06-08 78 views
1

嗨我想只显示父类别,但此代码也显示子类别。 我无法从此删除子类别。筛选器中的子类别

还有一件事我怎么能只显示一个子类别父类别..

<?php 

class AQ_Portfolio_Block extends AQ_Block { 

//set and create block 
function __construct() { 
    $block_options = array(
     'name' => 'Portfolio', 
     'size' => 'span12', 
     'resizable' => 0, 
     'block_description' => 'Add a feed of Portfolio posts to the page.', 
     'block_category' => 'feeds', 
     'block_icon' => '<i class="fa fa-fw fa-paint-brush"></i>' 
    ); 
    parent::__construct('aq_portfolio_block', $block_options); 
}//end construct 

function form($instance) { 
    $defaults = array(
     'type' => 'classic', 
     'pppage' => '999', 
     'filter' => 'all', 
     'show_filter' => 1 
    ); 

    $instance = wp_parse_args($instance, $defaults); 
    extract($instance); 

    $args = array(
     'orderby'     => 'name', 
     'hide_empty'    => 0, 
     'hierarchical'    => 1, 
     'taxonomy'     => 'portfolio_category' 
    ); 

    $filter_options = get_categories($args); 

    $portfolio_types = array(
     'classic' => 'Classic Masonry', 
     'masonry' => 'Fixed Masonry', 
     'full' => 'Full Width', 
     'classic-lightbox' => 'Classic Masonry Lightbox', 
     'masonry-lightbox' => 'Fixed Masonry Lightbox', 
     'full-lightbox' => 'Full Width Lightbox' 
    ); 
?> 

<?php 
}//end form 

function block($instance) { 
    extract($instance); 

    /** 
    * Initial query args 
    */ 
    $query_args = array(
     'post_type' => 'portfolio', 
     'posts_per_page' => $pppage 
    ); 

    /** 
    * If we're choosing just 1 category, add more args. 
    * GRAB ALL THE ARGS! 
    */ 
    if (!($filter == 'all')) { 
     if(function_exists('icl_object_id')){ 
      $filter = (int)icl_object_id($filter, 'portfolio_category', true); 
     } 
     $query_args['tax_query'] = array(
      array(
       'taxonomy' => 'portfolio_category', 
       'field' => 'id', 
       'terms' => $filter 
      ) 
     ); 
    } 

    /** 
    * Finally, here's the query. 
    */ 
    $block_query = new WP_Query($query_args); 

    /** 
    * Now let's grab categories for the animated portfolio filter buttons 
    */ 
    $cats = ($filter == 'all') ? get_categories('taxonomy=portfolio_category') : get_categories('taxonomy=portfolio_category&exclude='. $filter .'&child_of='. $filter); 

    if('classic' == $type) : 
?> 
通过这个

if(1 == $show_filter) 
       echo ebor_portfolio_filters($cats); 

帮助我

和输出只显示主要类别!

回答

0

你也应该在args数组中传递父类(主类别为父类0)参数,以便get_categories如下所示。

$args = array(
    'orderby'     => 'name', 
    'hide_empty'    => 0, 
    'hierarchical'    => 1, 
    'taxonomy'     => 'portfolio_category', 
    'parent'     => 0 
); 

$filter_options = get_categories($args); 

将只能得到父类,进一步您可以在下面的WordPress的文档链接部分https://developer.wordpress.org/reference/functions/get_categories/

+0

在“仅获得顶级类别”做“父” => 0仍显示所有类别的底部检查 –

+0

好的,你可以尝试使用get_terms函数来代替get_categories。 –

+0

如果parent => 0仍然不起作用,请使用childless => true参数代替parent => 0,对于无子女的更详细的详细信息,请检查此处指出'无子女'的链接 (bool)True将结果限制为没有孩子的条款。该参数对非分层分类法没有影响。默认false.https://developer.wordpress.org/reference/functions/get_terms/。 –