WordPress: mutasd meg az összes alkategóriát az aktuális poszthoz, kategóriához

A címben jelzett igényre semmilyen működő widgetet nem találtam (mert hogy sidebar-ba kellett), ezért az alábbi megoldást választottam, ami második körben is működőnek tűnik.

Telepítettem és aktiváltam a PHP Code Widget plugint. Ahogy a neve is mutatja, PHP kódot lehet widgetként a sidebar-ba pakolni.

A widget-ben akkor kellett tartalmat megjeleníteni, ha

  • a felső menüsorból egy kategória lett kiválasztva
  • egy kategorizált bejegyzést van megjelenítve single post-ként.

Archívum és a Search közvetlenül nem érhető el, ezért ezzel nem is foglalkoztam.

 

[pastacode lang=”php” message=”” highlight=”” provider=”manual”]

<?php

if (is_category()) {
     $cat = get_query_var('cat');
} else {
     $post = $GLOBALS["posts"][0];
     $postid =  $post->ID;
     $categories = get_the_category($postid);
     $cat = $categories[0]->cat_ID;
}

if ($cat!=-1 && !empty($cat))  {

    $this_category =  get_top_parent_category($cat);

    $this_category = wp_list_categories('hide_empty=1&hierarchical=true&orderby=name&show_count=0&title_li=&use_desc_for_title=1&child_of='.$this_category."&echo=0");
    if($this_category !='<li>No categories</li>')
    {
     echo '<ul>'.$this_category.'</ul>'; 
    }
}


function get_top_parent_category($cat){
     $curr_cat = get_category_parents($cat, false, '/' ,true);
     $curr_cat = explode('/',$curr_cat);
     $idObj = get_category_by_slug($curr_cat[0]);
     return $id = $idObj->term_id;
}
?>

[/pastacode]