Po prvním článku tady máme elegantnější způsob jak do parametru link_before funkce wp_list_pages() dostat speciální html entitu pro odsazení. V první článku jsem toto řešil pomocí blokového spanu s nastavenou šířkou, zde je lepší způsob.
<?php $param = 'depth=1&title_li=&link_before=' . html_entity_decode(htmlentities(' ')) . '&exclude=57'; wp_list_pages($param); ?>
Pěkné je to v tom, že nám to opravdu vypíše nonbreaking spaces, zádrhel je zase ale v tom, že jako parametr htmlentities musíte opravdu napsat nezlomitelnou mezeru pomocí nějakého šikovnějšího textového editoru. A navíc je toto řešení validní narozdíl od toho prvního.
Od verze 2.7 nabízí WordPress dva nové parametry pro funkci wp_list_pages() a to link_before a link_after. Tyto parametry umí před odkaz vložit nějaký text nebo html. Co však neumí (a nebo se mi to nepovedlo najít nebo vymyslet) je vložení entity. Takovým vhodným využitím by bylo vložení např. nezalomitelných mezer, pokud máme text v menu vycentrován, doplněn grafickými odrážkami a je nastaveno pozadí odkazu. Pak je sice text vycentrován, ale použití grafické odrážky způsobí to, že celý blok (tj. odkaz a odrážka) nepůsobí vycentrovaně. V tu chvíli jediná možnost jak zarovnat odkaz i s grafickou odrážkou na střed je právě parametr link_before a odsazení si musíme dodělat pomocí html.
Celá konstrukce bude vypadat nějak následovně:
<?php wp_list_pages('depth=1&title_li=&exclude=57&link_before=<span class="odsazeni"> </span>'); ?>
Span musí být párový, pokud ho uděláme jako <span /> tak do něj WordPress uzavře text odkazu, což je nežádoucí. A styl pro třídu .odsazeni bude následující
.odsazeni
{
display: inline-block;
width: 10px;
}
Je to opravdu provizorní řešení.