2013-09-27 32 views
0

我正在嘗試構建一個WordPress插件和Widget,我希望它們處於相同的物理包中。這個Widget應該仍然​​是典型的WordPress小部件,可以拖放到小部件啓用的區域(已經完成並正在工作),並且插件應該啓用WordPress管理面板中的某些子菜單,並且在那裏有幾個選項,它應該能夠呈現主文檔中的某些HTML;比方說身體部分。WordPress插件與Widget在一個包中

我也想讓兩者溝通;至少讓Widget可以從插件中讀取某些設置。

我是一名高級PHP程序員,但對於WP插件開發我還是比較新的,所以我的主要問題是關於建議的架構。 Google不能引起任何興趣,我只是不想在這裏重新發明輪子。

我的試驗和錯誤導致我喜歡的東西:

class MyWidget extends WP_Widget { 
... 
} 
add_action('widgets_init', create_function('', 'register_widget("MyWidget");')); 

然後:

class MyPlugin { 
... 
} 

無論是在主plugin.php文件,但我仍然得到完全失去了無論是推出後者還是任何形式的公共方法溝通。

謝謝!

+1

使用[this](https://gist.github.com/toscho/3804204)作爲您的基本插件。在'plugin_setup()'內部,調用Widget動作(對widget類使用'include')和所有其他插件動作。在[wordpress.se]研究標籤'',很多好東西,每平方像素比這裏更多的開發者;)額外:[(1)](https://github.com/Emerson/ Sanity-Wordpress-Plugin-Framework)和[(2)](https://github.com/tommcfarlin/WordPress-Plugin-Boilerplate)。 – brasofilo

回答

0

當班WordPress插件 代替

add_action('widgets_init', create_function('', 'register_widget("MyWidget");')); 

你就需要構造像這樣

add_action('widgets_init', array($this, 'callback'); 

是的,沒有它的變量的方法,INSIDE報價,使用,如果$該工作回調是iniside這個類,但你也可以使用類$ my_other_class實例化與$ my_other_class = new My_Other_Class();調用一個方法$ my_other_class裏面...也& $這將工作(通過參考)

此外,如果你想將變量傳遞給你的回調,你可以像這樣的回調方法裏面添加一個動作:

add_action('my_custom_hook'... 

,然後無論您的變量是可以

do_action('my_custom_hook', $var, $var2) 

,使他們你的回調函數內訪問

希望這給你一個起點,至少在如何在WP上下文結構的東西...

+0

非常感謝您的時間伴侶,但有兩件事......首先,它並沒有真正回答我關於從一個文件加載兩個不同事物(插件和小部件)的問題。其次,我是按照你所建議的方法來過的,但它不知何故無法啓動。 WordPress是否有某種類的自動加載器呢? – kyeno