2016-06-08 10 views
1

Hallo Ich möchte nur die übergeordnete Kategorie anzeigen, aber dieser Code zeigt auch Unterkategorie. kann die Unterkategorie nicht entfernen.Filter Unterkategorie in WordPress

und eine weitere Sache, wie ich nur ein Elternteil Kategorie mit der Subkategorie zeigen ..

<?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' 
    ); 
?> 

und diese

<?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) : 
?> 

und Ausgabe über dieses

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

help me out nur Hauptkategorie anzeigen!

Antwort

0

sollten Sie übergeordnete (übergeordnete 0 für Hauptkategorien) Parameter auch in args-Array für get_categories wie unten übergeben.

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

$filter_options = get_categories($args); 

es erhalten nur die Kategorien Eltern, weiter können Sie unten überprüfen der folgenden Wordpress Dokumentation Link in „Get nur Top-Level-Kategorien“ Abschnitt https://developer.wordpress.org/reference/functions/get_categories/

+0

tun ‚Eltern‘ => 0 zeigen noch alle Kategorie –

+0

Ok, kannst du get_terms Funktionen anstelle von get_categories ausprobieren. –

+0

Wenn parent => 0 immer noch nicht funktioniert, verwenden Sie childless => true parameter anstelle von parent => 0, für weitere Details von kinderlosen, überprüfen Sie diesen Link, der besagt 'kinderlos' (bool) True, um Ergebnisse zu begrenzen Begriffe, die keine Kinder haben. Dieser Parameter hat keine Auswirkungen auf nicht-hierarchische Taxonomien. Standard false.https: //developer.wordpress.org/reference/functions/get_terms/. –

Verwandte Themen