2015年7月8日水曜日

WP_List_Tableで、絞り込み検索を表示させる

今回は、WP_List_Table クラスを extends して作成したクラスで、「絞り込み検索」を表示させる。



日本語Codexによると、months_dropdown( $post_type ) というメソッドがあるので、参考にした。

以下のメソッド





display_tablenav( $which )
テーブルナビゲーションをテーブルの上部または下部に出力します。display()の中で呼び出されるため、明示的に呼び出す必要はありません。


内で、次のメソッドが呼ばれている。





extra_tablenav( $which )
一括処理とページネーションコントロールの間に追加のコントローラーを出力したい場合はオーバーライドしてください。


ということで、作成したクラスに以下を追加する。

<?php
function extra_tablenav( $which ) {
      if('bottom' == $which) return; // テーブルの上部だけ表示する
?>
      <div class="alignleft actions">
      <?php $this->providers_dropdown();?>
      <input type="submit" name="filter_action" id="post-query-submit" class="button" value="絞り込み検索">
      </div>
<?php
}

function providers_dropdown() {
   $provider = isset( $_GET['provider'] ) ? (int) $_GET['provider'] : 0;
?>
  <label for="filter-by-provider" class="screen-reader-text">種別で絞り込み</label>
  <select name="provider" id="filter-by-provider">
      <option<?php selected( $provider, 0 ); ?> value="0">すべての種別</option>
       <option<?php selected( $provider, 1 ); ?> value="1">Twitter</option>
       <option<?php selected( $provider, 2 ); ?> value="2">Facebook</option>
       <option<?php selected( $provider, 3 ); ?> value="3">Google</option>
   </select>
<?php
}
?>

当然、実際のデータ絞り込みは、例えば、

prepare_items($_GET['provider'] )

などのように、prepare_items にクエリー変数を渡して、処理を行う。
まあ、$_GETはグローバル変数なんだから、わざわざ渡さなくてもいいけど。

0 件のコメント:

コメントを投稿