Jak zjistit, zda se jedná o front page z functions.php

Úvodní stránka Fórum podpory WordPressu Problémy s WordPressem Jak zjistit, zda se jedná o front page z functions.php

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ů.

Aktuálně je na stránce zobrazeno 6 příspěvků - 1. až 6. (z celkem 6)
  • Autor
    Příspěvky
  • #2372

    Musilda
    Participant
    Web

    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í.

    #13130

    admin
    Keymaster
    Web

    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?

    #13131

    Musilda
    Participant
    Web

    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.

    #13132

    admin
    Keymaster
    Web

    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?

    #13133

    Musilda
    Participant
    Web

    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.

    #13134

    admin
    Keymaster
    Web

    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…

Aktuálně je na stránce zobrazeno 6 příspěvků - 1. až 6. (z celkem 6)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.

WordPress – novinky, návody a zajímavosti