PHP と WP のバージョンアップでテーマが動かなくなった。
しばらく放置していたブログの PHP と WP のバージョンアップしたらテーマが動かなくなった。
基本的な原因は、ワードプレスでつかう関数の呼び出し方がバージョンアップによって変わった。
同じように php においてもそういったことが発生した。
まぁ、PHPの変更でワードプレス側も変更しなければいけなくなったってことなんだと思う。
PHPってこういうことが起こるから嫌いなんだ。
結局PHPの開発チームはオタクの集まりで現場で使っている人間のことをかんがえず、自分たちのスマートだけを追求してる連中。
PHPが嫌いと言うよりPHPの開発チームの人間が嫌いってことになるんだな・・・
それはいいとして、トラブルが2つ出た。
どちらもテーマの中のfunctions.php
‘name’ =>’SideBar(dummy)’,
‘before_widget’ => ‘<div class=”cont”>’,
‘after_widget’ => ‘</div>’,
‘before_title’ => ‘<h2>’,
‘after_title’ => ‘</h2>’,
));
‘name’ =>’SideBar(dummy)’,
‘id’ =>’SideBar(dummy)’,
‘before_widget’ => ‘<div class=”cont”>’,
‘after_widget’ => ‘</div>’,
‘before_title’ => ‘<h2>’,
‘after_title’ => ‘</h2>’,
));
要するにコンストラクタの記述が変わりましたってこと。
function WP_Widget_ImgPost (){
$widget_ops = array(‘classname’ => ‘Widget_ImgPost’, ‘description’ => ‘CoolWeb仕様のトップページ用画像付記事一覧(表示数、表示順指定可)’);
$this->WP_Widget(‘ImgPost’, ‘CoolWeb:画像付記事一覧’, $widget_ops);
}
書きかえたもの
class WP_Widget_ImgPost extends WP_Widget {
function __construct(){
$widget_ops = array(‘classname’ => ‘Widget_ImgPost’, ‘description’ => ‘CoolWeb仕様のトップページ用画像付記事一覧(表示数、表示順指定可)’);
parent::__construct( ‘ImgPost’, ‘CoolWeb:画像付記事一覧’, $widget_ops );
}
つまり、以前はクラスのコンストラクタ(初期化)する関数は、クラスと同じ名前にしとくだったのが、__construct って書くことになった。
さらに、その関数の定義は、$this->WP_Widget でやっていたものを parent::__construct と書きなさいと。
スマートになりましたね。。。。くっだらね。
上位互換にしとけばいいじゃんって思う。つまりどちらも使えるように。
まぁ、そうなると言語処理プログラムがでかくなるからわからなくもないけど、
やだもぅ。
この記事があなたの助けになれば幸いです。
基本的な原因は、ワードプレスでつかう関数の呼び出し方がバージョンアップによって変わった。
同じように php においてもそういったことが発生した。
まぁ、PHPの変更でワードプレス側も変更しなければいけなくなったってことなんだと思う。
PHPってこういうことが起こるから嫌いなんだ。
結局PHPの開発チームはオタクの集まりで現場で使っている人間のことをかんがえず、自分たちのスマートだけを追求してる連中。
PHPが嫌いと言うよりPHPの開発チームの人間が嫌いってことになるんだな・・・
それはいいとして、トラブルが2つ出た。
どちらもテーマの中のfunctions.php
register_sidebar はIDが必要になりました。
古いテーマの register_sidebar
register_sidebar(array(‘name’ =>’SideBar(dummy)’,
‘before_widget’ => ‘<div class=”cont”>’,
‘after_widget’ => ‘</div>’,
‘before_title’ => ‘<h2>’,
‘after_title’ => ‘</h2>’,
));
修正後のregister_sidebar
register_sidebar(array(‘name’ =>’SideBar(dummy)’,
‘id’ =>’SideBar(dummy)’,
‘before_widget’ => ‘<div class=”cont”>’,
‘after_widget’ => ‘</div>’,
‘before_title’ => ‘<h2>’,
‘after_title’ => ‘</h2>’,
));
クラスのコンストラクタの記述が変わりました。
こんなエラーがでました。Methods with the same name as their class will not be constructors in a future version of PHP; WP_Widget_ImgPost has a deprecated constructor
要するにコンストラクタの記述が変わりましたってこと。
古いテーマの記述
class WP_Widget_ImgPost extends WP_Widget {function WP_Widget_ImgPost (){
$widget_ops = array(‘classname’ => ‘Widget_ImgPost’, ‘description’ => ‘CoolWeb仕様のトップページ用画像付記事一覧(表示数、表示順指定可)’);
$this->WP_Widget(‘ImgPost’, ‘CoolWeb:画像付記事一覧’, $widget_ops);
}
書きかえたもの
class WP_Widget_ImgPost extends WP_Widget {
function __construct(){
$widget_ops = array(‘classname’ => ‘Widget_ImgPost’, ‘description’ => ‘CoolWeb仕様のトップページ用画像付記事一覧(表示数、表示順指定可)’);
parent::__construct( ‘ImgPost’, ‘CoolWeb:画像付記事一覧’, $widget_ops );
}
つまり、以前はクラスのコンストラクタ(初期化)する関数は、クラスと同じ名前にしとくだったのが、__construct って書くことになった。
さらに、その関数の定義は、$this->WP_Widget でやっていたものを parent::__construct と書きなさいと。
スマートになりましたね。。。。くっだらね。
上位互換にしとけばいいじゃんって思う。つまりどちらも使えるように。
まぁ、そうなると言語処理プログラムがでかくなるからわからなくもないけど、
やだもぅ。
この記事があなたの助けになれば幸いです。