Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Wordpress] Wywołanie "widgets_init" w konstruktorze klasy
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy portalowe i CMS'y
klapaucius


Witam. Mam następujący problem. Próbuję w konstruktorze klasy wywołać akcję do haka "widgets_init". Oto mój kod:

  1. class Fwk_User extends Fwk {
  2.  
  3. public function __construct() {
  4. add_action('widgets_init', array(&$this, 'init_fwk_widget'));
  5. }
  6.  
  7. public function init_fwk_widget(){
  8. register_widget('Fwk_Widget');
  9. }
  10.  
  11. }


Jednak po tym w opcjach nie pojawia się mój widget.
Gdy to samo robię poza klasą:
  1. add_action('widgets_init', 'init_fwk_widget');
  2.  
  3. function init_fwk_widget(){
  4. register_widget('Fwk_Widget');
  5. }


to wszystko działa jak należy - widżet znajduje się w panelu admina.

Dlaczego jednak nie działa to wywoływane z konstruktora klasy? Dodam jeszcze, że gdy w owym konstruktorze użyję haka np. "wp_head", to zostaje on wywołany bez problemu. Natomiast "widgets_init" nie. Dlaczego?
adeptofvoltron
widgets_init wywołuje ci funkcję init_fwk_widget...w której rejestrujesz widgeta.
dopiero w tym momencie tworzony jest obiekt...a więc dopiero w tym momencie wywoływany jest konstruktor.

klapaucius
Cytat(adeptofvoltron @ 10.06.2014, 21:10:13 ) *
widgets_init wywołuje ci funkcję init_fwk_widget...w której rejestrujesz widgeta.
dopiero w tym momencie tworzony jest obiekt...a więc dopiero w tym momencie wywoływany jest konstruktor.


Szczerze nie bardzo rozumiem... Z tego wynika, że w funkcji, której rejestruję widget (init_fwk_widget) jest tworzony obiekt? Ale jaki obiekt? Obiekt całej klasy Fwk_User?
Ale nawet jeśli to co do ma do rzeczy - do tego, że akcja widgets_init nie zostaje wywołana?

Będę wdzięczny za dokładniejsze wytłumaczenie problemu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.