前不久本站升級Wordpress 3.1.3,今天看到訊息通知又出了Wordpress 3.2正式版,手癢試試新版的自動升級,就給它按下去,幾秒鐘就完成了,沒有錯誤。
試了一些功能,好像ok…但是有幾個plugin有列表的地方出不來,畫面顯示一片空白,原來http server就回覆500錯誤,再查php的error log,發現出現:
PHP Fatal error: Call to undefined method WP_List_Table::wp_list_table() in C:\Appserv\wwwroot\wp\wp-content\plugins\avh-first-defense-against-spam\class\avh-fdas.ipcachelist.php on line 53
或
PHP Fatal error: Call to undefined method WP_List_Table::wp_list_table() in C:\Appserv\wwwroot\wp\wp-content\plugins\backwpup\app\list-tables.php on line 8
看來是Wordpress 3.2的WP_List_Table出了問題,自己死馬當活馬醫,用以前介紹的工具Winmerge找一下,改
wp-admin\includes\class-wp-list-table.php 第80行,
由
function __construct( $args = array() ) {
改為
function WP_List_Table( $args = array() ) {
問題解決!是Wordpress 3.2的bug吧,php我不懂,為什麼要特地改用__construct,反而出問題?
沒事,還是別亂升級。
看起來是那個 AVH First Defense Against Spam 的問題。
???不是啊。
__construct
是 PHP5 的正確用法: http://stackoverflow.com/questions/455910/what-is-the-function-construct-used-for更新吧!
http://wordpress.org/extend/plugins/backwpup/changelog/
那個 avh-first-defense-against-spam 自己用
__construct
然後用舊名字叫 parent constructor。謝謝瞜。那麼,__construct與直接用class name功用是一樣的,改__construct有任何好處嗎?
那個 stackoverflow 的答案裡有。
I updated backwpup to 2.1.6 in WP 3.2.1 AND HAD Call to undefined method WP_List_Table::WP_List_Table() . I changed function __construct( $args = array() ) {
to function WP_List_Table( $args = array() ) {, an solved the problem.
Thanks for your post!