Simplicityの特徴 › フォーラム › Simplicity2に関する話題何でも › widget.phpについて
- このトピックには4件の返信、2人の参加者があり、最後ににより10ヶ月、 1週前に更新されました。
-
投稿者投稿
-
-
Hidekichiゲスト
モバイル用テキストウィジェットの追加、以降のfunction名が元のままで__constructになってないですかね。
register_widgetあたりの説明では、
function 何かしらの名称 { parent:: __construct(){} }
こんな感じで書いてありますが、現在の標準は
class My_Widget extends WP_Widget { function __construct() { parent::__construct() { 色々な初期設定 } } public function widget( $args, $instance ) { } public function form( $instance ) { } public function update( $new_instance, $old_instance ) { } }
こんな感じです。public等のアクセス修飾子は、ついてなければpublicなので(と見なすので)、無くても良いんですけれども。もし仮にprivateなメソッドなりも入れて、機能を分けたいなどをしたい場合には入れておいたほうが良いでしょうね。他人から見た時にわかりやすいので。
あと、add_sctionの部分ですが、これも古い書き方なんですけれどもwordpress自体のバージョンが低い人もいるかと思うので、僕はどちらもいけるように、
function php_cmp_ver($w) { if (version_compare(phpversion(), '5.3', '<')) { add_action( 'widgets_init', function(){ register_widget( $w ); }); } else { add_action('widgets_init', create_function('', 'return register_widget("'.$w.'");') ); } }
こういうのをwidget.phpの先頭に入れて、例えば「class SimplicityWidgetItem extends WP_Widget {」の場合、
php_cmp_ver("SimplicityWidgetItem");
を本来のアクションの部分に入れて利用してます。上記はphpのバージョンを5.3以上かどうかをチェックして、add_actionを使い分けるというような感じです(5.3から記述が新しいものを利用できるようになってるみたいです。create_functionの方は5.2までとか)。
version_compareが誰でも使えるかどうかはわかりませんが、たいてい使えるのではなかろうかと思ったりしてます。
一応、うちのローカルでは動いてます(php7、マイナーバージョンは忘れました)。 -
Hidekichiゲスト
× add_sctionの部分ですが
◯ add_actionの部分ですが -
わいひらキーマスター
__constructは、置換漏れがあったみたいですね。
手元のファイルを修正しておきましたので、次のバージョンで修正されると思います。php_cmp_verの方は、何か報告があるまでとりあえず様子を見ようかと思います。
-
Hidekichiゲスト
2.0.1のwidget.php 629行目あたりモバイル用テキストウイジェットの追加の所の__constructが置換忘れのようです。
-
わいひらキーマスター
本当だ;
2、3回確認したつもりだったのに。
ありがとうございます!
手元のファイルは修正しておきました。
今度のバージョンアップでは、大丈夫なはず(笑)
-
-
投稿者投稿