私はWordPressダッシュボードに表示するためのカスタムデータテーブルに取り組んでいます。テーブルは私がプラグインで構築したデータベーステーブルから生成されます。
私はこの分野で私のコーディング質問の大部分のために提供されたWordPressカスタムリストテーブル例を使用してきました、しかし例は一括操作を扱うために何も持っていません。文書化された例へのリンクは次のとおりです。 http://wordpress.org/extend/plugins/custom-list-table-example/
一括アクションを処理するために、例ではこれだけを提供します。
function process_bulk_action() {
//Detect when a bulk action is being triggered...
if( 'delete'===$this->current_action() ) {
wp_die('Items deleted!');
}
}
アクション用に選択された項目をどのようにして削除するか、それに応じてそれらのデータベース項目を編集できるようにする方法を知りたいです。
標準のcolumn_cb()関数を使用していると仮定すると、リストテーブルは選択された行のIDを$ _GETの配列に渡し、リストテーブルのコンストラクタで 'singular'に割り当てたものとしてラベルを付けます。
これは典型的なcolumn_cb()です:
function column_cb($item){
return sprintf(
'<input type="checkbox" name="%1$s[]" value="%2$s" />',
/*$1%s*/ $this->_args['singular'], //Let's simply repurpose the table's singular label ("video")
/*$2%s*/ $item->id //The value of the checkbox should be the record's id
);
}
たとえば、動画を表示するリストテーブルがあるとします。コンストラクタは次のようになります。
function __construct(){
global $status, $page;
//Set parent defaults
parent::__construct( array(
'singular' => 'video', //singular name of the listed records
'plural' => 'videos', //plural name of the listed records
'ajax' => false //does this table support ajax?
) );
}
そのため、リストテーブルの3つの行をチェックし、一括アクションリストから[削除]を選択して[適用]をクリックすると、$ _GET ['video']を使用して選択した行にアクセスできます。
function process_bulk_action() {
//Detect when a bulk action is being triggered...
if( 'delete'===$this->current_action() ) {
foreach($_GET['video'] as $video) {
//$video will be a string containing the ID of the video
//i.e. $video = "123";
//so you can process the id however you need to.
delete_this_video($video);
}
}
}