如何在自定义列表表类中处理批量操作?

时间:2011-08-03 作者:Chiubaka

我正在处理要显示在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!\');
    }

}
我想知道如何提取为操作选择的项目,以便删除它们或相应地编辑它们的数据库条目。

1 个回复
最合适的回答,由SO网友:Nate Dudek 整理而成

假设您使用的是标准column\\u cb()函数,列表表将以$\\u GET的形式传递数组中所选行的ID,标记为您在列表表的构造函数中指定给“singular”的任何内容。

下面是一个典型的column\\u 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?
        ) );

    }
因此,如果选中列表中的三行,从批量操作列表中选择“删除”,然后单击“应用”,则可以使用$\\u 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);
            }
        }

    }

结束

相关推荐