Úvodní stránka › Fórum podpory WordPressu › Problémy s WordPressem › Zbytky po escapování v menu
Štítky: Escapování, wp_nav_menu()
Zvolené téma obsahuje celkem 7 odpovědí. Do diskuze (2 účastníci) se naposledy zapojil uživatel admin a poslední změna je stará 12 let, 8 měsíců.
-
AutorPříspěvky
-
20. července 2012 (7:13) #1837
Ahoj. Dneska jsem tak ze srandy, kliknul na tlačítko v prohlížeči, které kontroluje kód, a vyšlo mi pár drobných nesmyslů, vzniklých podle mně při escapování (“) uvozovek ve WP. Nevím jestli to dělá všem, ale mě to v HTML našlo toto:
<li id=""menu-hlavni"" class=""menu""></li>
odkaz na test je tady. Mně to zatím nic vážného neudělalo, ale mohlo by to udělat i vážnější chyby, nehledě k tomu, že vyhledávače hledají přednostně validní kód, myslím. Díky za diskusi
20. července 2012 (9:07) #12162Ano, tento HTML kód je opravdu na webu. Těžko říci, jak se to tam dostalo, ale patrně máš nějaké špatné parametry u funkce wp_nav_menu() pro zobrazení menu (pokud je tam použita). Když přepneš na nějakou výchozí šablonu (např. Twenty Eleven), tak by to mělo být bez problémů…
20. července 2012 (10:40) #12163Tak to bylo tím. Netušil jsem, že zkopírování z Kodexu bude mít tak zlé následky
20. července 2012 (13:20) #12164Samotné zkopírování z manuálu WordPressu nemůže mít žádné zlé následky, uvedené příklady jsou tam převážně správné. V čem byl tedy problém?
20. července 2012 (14:54) #12165Jak jsem řekl, při tvorbě šablony jsem zkopíroval z příkladu v kodexu toto:
<?php $defaults = array(
'theme_location' => ,
'menu' => ,
'container' => 'div',
'container_class' => 'menu-{menu slug}-container',
'container_id' => ,
'menu_class' => 'menu',
'menu_id' => ,
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => ,
'after' => ,
'link_before' => ,
'link_after' => ,
'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
'depth' => 0,
'walker' => );
?>
<?php wp_nav_menu( $defaults ); ?>bohužel jsem si neudělal práci, ověřit jaká je použita uvozovka u items_wrap, a informaci, že se v tom případě nemusí escapovat. Na to jsem ale narazil až teď, a v kódu to bylo asi proto, že byl parametr uzavřen v jiných uvozovkách, a tak tedy escapování nemohlo fungovat… Říkám to správně?? :D
20. července 2012 (15:22) #12166Hmmm, pravda, ten příklad v manuálu je nějak špatně naformátovaný, správně by to mělo být podle mě asi takto:
<?php $defaults = array(
'theme_location' => '',
'menu' => '',
'container' => 'div',
'container_class' => '',
'container_id' => '',
'menu_class' => 'menu',
'menu_id' => '',
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
'depth' => 0,
'walker' => '' );
?>Bez chybějících apostrofů to fungovat nebude, stejně tak to escapování tam je špatně.
Každopádně je to pouze ukázkové výchozí nastavení této funkce, takže parametry, které nechcete měnit není třeba vůbec zapisovat, vhodnější příklady naleznete dole na stránce v manuálu.
20. července 2012 (19:15) #12167Tak jasně, mám to tam jinak v té šabloně, tam jsem zrušil zpětná lomítka a funguje to dál, chtěl jsem poukázat na možnou chybu v příkladech (na to by asi člověk postupně přišel sám, ale pro zjednodušení…), aby to obzvlášť nováčky (jako já ;) nezmátlo.
23. července 2012 (12:44) #12168 -
AutorPříspěvky
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.