'nabend
eine möglichkeit wäre gewesen, eine ganz eigene funktion als ersatz für wp_list_categories zu schreiben.
um das ganze aber möglichst kompatibel zu halten habe ich einen wrapper erstellt, der die originalfunktion von wordpress verwendet.
dabei habe ich es jetzt erst einmal ganz einfach gehalten, da ich den speziellen anwendungsfall nicht kenne.
was macht die funktion also?
es wird nahezu der original-output von wp verwendet und nur alle list-elemente mit "kindern" um die css-klasse: 'parent' erweitert.
alle argumente der original-wp-funktion lassen sich verwenden und werden mit durchgeschleust.
für die functions.php:
function cg_list_categories($args = '') {
$r = wp_parse_args($args);
$echo = true;
if (isset($r['echo']) && !$r['echo']) { $echo = false; }
$r['echo'] = 0;
$output = wp_list_categories($r);
$output = preg_replace('/(<li class="cat-item .*)(">.*<ul class=["|\']children["|\']>)/isU', '$1 parent$2', $output);
if ($echo) {
echo $output;
} else {
return $output;
}
}
Alles anzeigen
beispielanwendung im template (sidebar.php):
<?php cg_list_categories('show_count=1&title_li=<h2>Kategorien</h2>'); ?>
also genau wie zuvor; nur "cg_" statt "wp_".
beispiel-css, das ich zum testen verwendet hatte:
li.parent {
font-size:22px;
}
ul.children li {
font-size:10px;
}
aus original (wp_list_categories)
<li class="cat-item cat-item-1">
wird also (cg_list_categories)
<li class="cat-item cat-item-1 parent">
wenn "kinder" vorhanden sind.
alles ausprobiert im standard-de-theme, aber nicht ausgiebig getestet.
wenn es jetzt darum geht, wirklich individuelle navigationen zu erstellen (horizontal, dropdown, spezielleres styling, angepasst für dynamische javascript-menüs, etc.) würde ich dazu übergehen eine komplett eigene funktion zu schreiben, bzw. im nächsten schritt dann ein plugin.
reicht dir das?
edit: sehe gerade, da stimmt irgendwas am regulären ausdruch noch nicht.
sind die kategorien etwas mehr verschachtelt läuft da was nicht. schaue ich mir die tage noch mal an.