Apply filters vrací prázdnou hodnotu

Úvodní stránka Fórum podpory WordPressu Problémy s WordPressem Apply filters vrací prázdnou hodnotu

Zvolené téma obsahuje celkem 3 odpovědi. Do diskuze (2 účastníci) se naposledy zapojil uživatel  sjiamnocna a poslední změna je stará 4 roky, 5 měsíců.

Aktuálně jsou na stránce zobrazeny 4 příspěvky - 1. až 4. (z celkem 4)
  • Autor
    Příspěvky
  • #26446

    sjiamnocna
    Participant
    Web

    Ahoj.
    Docela dlouho se s tím patlám, tak chci poprosit o radu vás:

    Mám pro plugin třídu na zjednodušení přidávání Admin upozornění (akcí admin_notices), a používám k tomu filtrování pole array(). Zkouším však různě, a vždycky mi var_dump vyplivne, že je hodnota nulová.

    toto se nachází mimo třídu (před jejím spuštěním new songbook_message()):

    function a($n) {
        $n[] = array('Ahoj', 'updated');
        return $n;
    }
    add_filter('wpsb_notice', 'a');

    a funkce:

    //function showmessage se nachází ve třídě songbook_showmessage
    $messages = apply_filters('wpsb_notice', array());
            var_dump($messages);
    //NULL...

    jediný případ, kdy mi vrátí pole, je pouze pokud funkci přidávající data dám přímo před řádek s filtrem:

    function a($n) {
                $n[] = array('Ahoj', 'updated');
                return $n;
            }
    
            add_filter('wpsb_notice', 'a');
            $messages = apply_filters('wpsb_notice', array());
            var_dump($messages);

    Bude to nějaká blbost, ale fakt už si nevím rady (už podle toho var_dumpu :) )

    Může mi někdo poradit?
    Celý soubor se pokusím přiložit ;)

    Attachments:
    1. class.mess_.txt
    #26451

    admin
    Keymaster
    Web

    Nemělo by tam být místo:

    add_action('admin_notices', array($this, 'showmessage'), 10, 2);

    spíše toto:

    add_action('admin_notices', array($this, 'songbook_showmessage'), 10, 2);

    Funkce ve třídě messages se nazývá songbook_showmessage() a nikoli showmessage(). Ale možná tam jen není celá ukázka, zatím jsem to blíže nezkoumal…

    #26460

    sjiamnocna
    Participant
    Web

    Omlouvám se, ze zoufalství jsem sáhnul pro zálohu dřívější verze a nenapadlo mně, že nemůžu zkopírovat pouze část souboru :)

    Každopádně – výsledek je stejný – “NULL” v hlavičce admina (tam kde mají být zprávy)..

    Upravený soubor přikládám v *.txt (novější – č. 2)
    Výsledek je vidět v přiloženém obrázku (oba stejné ;) )

    #26467

    sjiamnocna
    Participant
    Web

    No a chyba je na světě, a jako vždy mezi židlí a klávesnicí.

    Mám tam v jiném souboru nastavenou hlášku o updatu verze pluginu a zapomněl jsem v ní na takovou drobnost; Na return :)

    BTW: Ještě dotaz, jak mohu porovnat uložené verze (>, <, =) u string jako třeba ‘2.0.1.4932’? Mám to explodovat tečkou, pak intval a teprv porovnávat, nebo je lepší technika? Odstranit tečky str_replace a pak převést na číslo?

    Děkuji za trpělivost, snad už se někdy poučím ;)

    function wpsb_version() {
            if (WPSB_VERSION == $this->option('version'))
                add_filter('wpsb_notice', function($m) {
                    $m[] = $this->option('old');
                    return $m;
                });
            else{
                add_filter('wpsb_notice', function($m) {
                    $m[] = sprintf(__('Now you successfully upgraded your WordPress Songbook plugin from your old version %1$s to the newest %2$s. Be happy for you can now enjoy all new features of this version! :)', WPSB_LANGDOM), $this->option('old'), WPSB_VERSION );
                    return $m;
                });
                $this->option('old', 'save', $this->option('version'));
                $this->option('version', 'save', WPSB_VERSION);
            }
                
        }

    Díky :)

Aktuálně jsou na stránce zobrazeny 4 příspěvky - 1. až 4. (z celkem 4)

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