Zvolené téma obsahuje celkem 5 odpovědí. Do diskuze (2 účastníci) se naposledy zapojil uživatel admin a poslední změna je stará 11 let, 5 měsíců.
-
Ahoj
potřebuji poradit, chci odstranit edit link z admin baru, ale jen na front page.
Toto nefunguje:
add_action( 'wp_before_admin_bar_render', 'my_tweaked_admin_bar' );
function my_tweaked_admin_bar() {
global $wp_admin_bar;
if (is_front_page()){
$wp_admin_bar->remove_menu('edit');
}
}
Vím proč is_front_page nefunguje, ale nebyl jsem schopen přijít na jiné řešení.
Hmmm, teď jsem to zkoušel u šablony Twenty Twelve a bez problémů vše funguje. Co máte zobrazeno na hlavní stránce?
Na hlavní straně je zobrazena statická stránka s vytvořenou template pro hlavní stranu. Já jsem na google našel informaci, že is_front_page nefunguje v functions, protože se ten soubor načítá dříve než ostatní soubory šablony.
To je podle mě nesmysl. Sice je pravda, že se soubor functions.php načítá velmi brzy a nemůžete v něm tedy použít samotné volání podmínkových funkcí. V tomto případě je však funkce použita jako součást akčního hooku wp_before_admin_bar_render, který je spouštěn až mnohem později.
Důležité je v manuálu toto:
Warning: You can only use conditional query tags after the posts_selection action hook in WordPress (the wp action hook is the first one through which you can use these conditionals). For themes, this means the conditional tag will never work properly if you are using it in the body of functions.php, i.e. outside of a function.
A z toho plyne, že funkci is_front_page() můžete použít ve funkci, která je napojena na akční hook wp_before_admin_bar_render
(spouští se později než zmiňovaný hook posts_selection
).
Takže podle mě je problém v šabloně stránky, která je použita pro stránku zobrazenou na úvodní stránce. Pokud ten kód vyzkoušíte na nějaké výchozí šabloně (a nastavíte nějakou stránku, aby se zobrazovala na úvodní stránce), tak to bez problémů funguje. Co je konkrétně obsahem šablony stránky? Neprovádíte tam nějaké speciální dotazy nebo hrátky s $wp_query
?
Vyzkouším to na defaultní šabloně. Je pravda, že zrovna na této konkrétní šabloně volám několikrát $wp_query, ale vždy potom query resetuji. Myslel jsem, zda není jiný postup, jak zjistit, že se jedná o front page.
Těžko říci, chtělo by to vidět celý kód, pokud je to možné… Každopádně funkce is_front_page() je nejlepším způsobem, jak to zjistit a problém bude patrně někde jinde…
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.
WordPress – novinky, návody a zajímavosti