胖鼠采集(Fat Rat Collect) 插件解读

优秀的插件案例,可以知道全部现代开发的大概情况:

代码目录:

0: 使用composer:

//composer.json
{
    "require": {
        "jaeger/querylist": "^4.2",
        "jaeger/querylist-puppeteer": "^4.0",
        "tightenco/collect": "8.78.0"
    },
    "require-dev": {
        "symfony/var-dumper": "^5.0"
    },
    "autoload": {
        "files": [
            "src/Helpers/helpers.php",
            "src/Helpers/helpers2.php",
            "src/Controller/TaskController.php",
            "includes/fatrat-apierror.php",
            "includes/fatrat-spider.php",
            "includes/fatrat-options.php",
            "includes/fatrat-options-add-edit.php",
            "includes/fatrat-data.php",
            "includes/fatrat-data-detail.php",
            "includes/fatrat-validation.php",
            "includes/fatrat-kit.php",
            "includes/fatrat-debugging.php"
        ]
    }
}

1:WP_List_Table 的使用:

//WP_List_Table 
//是WordPress中用于显示数据的类,例如用户、插件、评论或文章。该类包含几乎所有显示、排序、分页和搜索数据所需的方法。您可以通过创建一个继承自WP_List_Table的类来创建自定义的列表表格,以满足您的特定需求。通过定义一些方法和变量,您可以自定义列、准备数据、排序、添加操作、批量操作、分页、搜索和其他自定义功能。这个类提供了丰富的功能,可以帮助您构建适合您需求的自定义列表表格。
if (!class_exists('WP_List_Table')) {
    require_once(ABSPATH . 'wp-admin/includes/class-wp-list-table.php');
}
class TaskController extends WP_List_Table
{
    protected $wpdb;
    protected $table_post;

class FRC_Configuration_List_Table extends WP_List_Table
{

class FRC_Data_List_Table extends WP_List_Table
{

class FRC_Data_Detail_Table extends WP_List_Table
{

上面是插件里面的使用,下面展示完整demo:

// 确保WP_List_Table类可用
if( ! class_exists( 'WP_List_Table' ) ) {
    require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
}

// 创建一个继承自WP_List_Table的自定义类
class My_List_Table extends WP_List_Table {
    // 示例数据
    var $example_data = array(
        array('ID' => 1, 'booktitle' => 'Quarter Share', 'author' => 'Nathan Lowell', 'isbn' => '978-0982514542'),
        // 其他示例数据...
    );

    // 定义要显示的列
    function get_columns(){
        $columns = array(
            'booktitle' => 'Title',
            'author'    => 'Author',
            'isbn'      => 'ISBN'
        );
        return $columns;
    }

    // 准备数据
    function prepare_items() {
        $columns = $this->get_columns();
        $hidden = array();
        $sortable = array();
        $this->_column_headers = array($columns, $hidden, $sortable);
        $this->items = $this->example_data;
    }

    // 显示默认列
    function column_default( $item, $column_name ) {
        switch( $column_name ) { 
            case 'booktitle':
            case 'author':
            case 'isbn':
                return $item[ $column_name ];
            default:
                return print_r( $item, true ); // 用于调试目的
        }
    }
}

// 创建一个实例并显示列表表格
$myListTable = new My_List_Table();
$myListTable->prepare_items();
$myListTable->display();

2: 建立新表和使用:

 $sql =
        "CREATE TABLE IF NOT EXISTS $table_post(
            `id` int(11) NOT NULL AUTO_INCREMENT,
            `option_id` int(11) NOT NULL,
            `status` tinyint(5) NOT NULL DEFAULT '1',
            `title` varchar(120) NOT NULL DEFAULT '',
            `cover` varchar(191) NOT NULL DEFAULT '',
            `content` mediumtext NOT NULL,
            `link` varchar(191) NOT NULL DEFAULT '',
            `post_id` int(11) NOT NULL DEFAULT '0',
            `message` varchar(191) NOT NULL DEFAULT '',
            `created_at` timestamp NULL DEFAULT NULL,
            `updated_at` timestamp NULL DEFAULT NULL,
            PRIMARY KEY (`id`),
            KEY `option_id` (`option_id`),
            KEY `status` (`status`),
            UNIQUE KEY `link` (`link`)
        )        $charset_collate; ";
    dbDelta( $sql );
//使用frc_post:
$this->wpdb = getDb();
$this->table_post = $this->wpdb->prefix . 'frc_post';

Powered by BetterDocs