widget.phpについて

このトピックには4件の返信が含まれ、2人の参加者がいます。3 年、 6 ヶ月前わいひら わいひら さんが最後の更新を行いました。

  • 投稿者
    投稿
  • #35164 返信

    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、マイナーバージョンは忘れました)。

    参考: version_compare | PHPマニュアル

  • #35165 返信

    Hidekichi

    × add_sctionの部分ですが
    ◯ add_actionの部分ですが

  • #35228 返信
    わいひら
    わいひら
    キーマスター

    __constructは、置換漏れがあったみたいですね。
    手元のファイルを修正しておきましたので、次のバージョンで修正されると思います。

    php_cmp_verの方は、何か報告があるまでとりあえず様子を見ようかと思います。

  • #35313 返信

    Hidekichi

    2.0.1のwidget.php 629行目あたりモバイル用テキストウイジェットの追加の所の__constructが置換忘れのようです。

  • #35327 返信
    わいひら
    わいひら
    キーマスター

    本当だ;
    2、3回確認したつもりだったのに。
    ありがとうございます!
    手元のファイルは修正しておきました。
    今度のバージョンアップでは、大丈夫なはず(笑)

返信先: widget.phpについて
あなたの情報:




スポンサーリンク
アドセンス(大)
アドセンス(大)