Hezké zobrazení počtu příspěvků v rubrice

Používáte widgety Rubriky a Archív? A nelíbí se vám, že počet příspěvků v rubrice nebo měsíci je zapsán jako ošklivé číslo v závorce za jménem rubriky, které nelze nijak rozumně naformátovat (viz oblíbené formátování vpravo na konci sidebaru, často podbarvené)? WordPress nabízí možnost, jak upravit formátování svých standardních widgetů.

Rubriky

Formátování rubrik je obtížný úkol. Samotný widget pouze vyvolá wp_list_categories(), což je standardní funkce WordPressu. Veškeré vykreslení widget ponechá na této funkci a formátováním se nezabývá. Widget naštěstí umožňuje ovlivnit parametry předávané do této funkce – pomocí hooku widget_categories_args. Jsme proto schopni ovlivnit vše, co standardní funkce umí. Není toho bohužel mnoho – formátování celé kategorie, úvodní a závěrečné značky, rozsah kategorií, nezařazené kategorie. Nic, co by ovlivňovalo formátování počtu příspěvků.

Jedním z parametrů funkce je však magický parametr walker, který umožňuje stanovit objekt odpovědný za vykreslení seznamu kategorií – a tam se nachází naše poslední možnost, jak ovlivnit zobrazení počtu příspěvku. V kódu tedy ovlivnění parametrů funkce vypadá takto:

Nyní je nutné definovat třídu My_Walker_Category, která bude odpovědná za vykreslování. Vytvoříme potomka originální Walker_Category, ve které přetížíme fungování značky pro vykreslení kategorie (bez obsahu kategorie) – metodu start_el, takto:

Nejprve zavoláme originální metodu předka – a následně ovlivníme její výsledek. Výsledek však funkce nevrací, pouze modifikuje svůj první argument – proměnnou $output. Opravíme tedy pomocí regulárních výrazů hodnotu v této proměnné a ponecháme ji svému osudu (zpracování mimo Walker).

Regulární výraz vyhledává číslo v závorkách a nahrazuje jej za vhodnou značku se stylem, přičemž přebytečné závorky odstraní.

Archív

Widget Archív je konstruován zásadně jiným způsobem než widget Rubriky. Neobsahuje walker ani jinou možnost ovlivnění jeho formátování. Obsahuje však hook get_archives_link pro produkci jednoho odkazu na historii – přičemž tento hook je možné upravit opět pomocí regulárního výrazu podobně jako ve widgetu Rubriky. Odpovídající kód bude:

Fungování je stejné jako v předchozím případě, pouze návratová hodnota není v prvním argumentu, ale přímo jako výsledek volané funkce – proto je výsledek práce regulárního výrazu vrácen pomocí return.