Úvodní stránka › Fórum podpory WordPressu › Problémy s WordPressem › Apply filters vrací prázdnou hodnotu
Štítky: add_filter, admin_notices, OOP, plugin
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á 8 let, 2 měsíce.
-
AutorPříspěvky
-
8. února 2016 (14:01) #26446
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:
8. února 2016 (22:16) #26451Nemě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 nikolishowmessage()
. Ale možná tam jen není celá ukázka, zatím jsem to blíže nezkoumal…9. února 2016 (9:38) #26460Omlouvá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é ;) )9. února 2016 (10:56) #26467No 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 :)
-
AutorPříspěvky
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.