Bjørnar
Gründer
Hei,
Følgende har jeg i functions.php:
Dette har jeg da i sidebar.php:
Dette fungerer fint på 1. level, og 2. level kategorier. Men på 3. level får jeg følgende feil:
Linje 511-519:
Men menyen vises forsåvidt riktig, men den tar med følgende
Hovedkategori (nivå 1)
- Underkategori (nivå 2)
- - Underkategori (nivå 3)
- Underkategori (nivå 2)
- - Underkategori (nivå 3)
- - Underkategori (nivå 3)
- - Underkategori (nivå 3)
Jeg ønsker at den kun skal ta med
Hovedkategori (nivå 1)
- Underkategori (nivå 2)
- - Underkategori (nivå 3)
Dersom man går inn på siste nivå - ikke siste nivå for alle kategoriene. Vanskelig forklart...
I tillegg, dersom man da går inn på en post tilhørende en kategori på nivå 3, så viser den kun hovedkategorien - og ikke den aktuelle kategoriene og tilhørende tre man er på.
Noen kloke hoder som kan dytte meg i riktig retning?
Følgende har jeg i functions.php:
Kode:
function get_mymenu($curcat = 0, $depth = 0)
{
$breadcats = my_get_breadcats($curcat);
$my_cats = my_get_all_categories();
$html = "<ul class=\"children\">";
$categories = $my_cats[$breadcats[$depth]];
foreach ($categories as $cat)
{
$html.= "<li class=\"cat-item\"><a href=\"". get_category_link( $cat->cat_ID ) ."\">". $cat->cat_name ."</a>";
if ($cat->cat_ID == $breadcats[$depth+1] && $depth<count($breadcats))
{
$html.= get_mymenu($curcat, $depth+1);
}
$html.= "</li>\n";
}
$html.= "</ul>\n";
return $html;
}
function my_get_all_categories()
{
static $my_cats = array();
if (count($my_cats)==0)
{
$categories = get_categories('child_of=0');
foreach ($categories as $cat)
{
$my_cats[$cat->category_parent][$cat->cat_ID] = $cat;
}
}
return $my_cats;
}
function my_get_breadcats($curcat = 0)
{
static $breadcats = array();
if (count($breadcats)==0)
{
$curcat = intval($curcat);
$breadcats[] = $curcat;
while($curcat!=0)
{
$curcategory = get_category($curcat);
$curcat = intval($curcategory->category_parent);
$breadcats[] = $curcat;
}
$breadcats = array_reverse($breadcats);
}
return $breadcats;
}
Dette har jeg da i sidebar.php:
Kode:
<?= get_mymenu($wp_query->query_vars['cat']); ?>
Dette fungerer fint på 1. level, og 2. level kategorier. Men på 3. level får jeg følgende feil:
Warning: Invalid argument supplied for foreach() in /home/XXX/XXX/XXX/wp-content/themes/lokal/functions.php on line 517
Linje 511-519:
Kode:
function get_mymenu($curcat = 0, $depth = 0)
{
$breadcats = my_get_breadcats($curcat);
$my_cats = my_get_all_categories();
$html = "<ul class=\"children\">";
$categories = $my_cats[$breadcats[$depth]];
foreach ($categories as $cat)
{
$html.= "<li class=\"cat-item\"><a href=\"". get_category_link( $cat->cat_ID ) ."\">". $cat->cat_name ."</a>";
Men menyen vises forsåvidt riktig, men den tar med følgende
Hovedkategori (nivå 1)
- Underkategori (nivå 2)
- - Underkategori (nivå 3)
- Underkategori (nivå 2)
- - Underkategori (nivå 3)
- - Underkategori (nivå 3)
- - Underkategori (nivå 3)
Jeg ønsker at den kun skal ta med
Hovedkategori (nivå 1)
- Underkategori (nivå 2)
- - Underkategori (nivå 3)
Dersom man går inn på siste nivå - ikke siste nivå for alle kategoriene. Vanskelig forklart...
I tillegg, dersom man da går inn på en post tilhørende en kategori på nivå 3, så viser den kun hovedkategorien - og ikke den aktuelle kategoriene og tilhørende tre man er på.
Noen kloke hoder som kan dytte meg i riktig retning?