<?php /* * Plugin Name: Wordpress Admin Table * Description: 관리자 페이지 테이블 예제 플러그인 * Version: 1.0.0 * Author: HiSEON * Author URI: https://hiseon.me/ */ include_once "table.php"; class admin_table_plugin { protected static $_instance = null; public $_tablelist; public static function instance() { if (is_null(self::$_instance)) { self::$_instance = new self(); } return self::$_instance; } protected function __construct() { $this->init(); } private function __clone() {} private function __sleep() {} private function __wakeup() {} public function get_table_name() { global $wpdb; return $wpdb->prefix.'customers'; } public function install() { global $wpdb; $table_name = $this->get_table_name(); if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) { $sql = "CREATE TABLE $table_name ( ID int auto_increment primary key, name text, address text, city text );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } } public function init() { add_filter('set-screen-option', array($this, 'set_screen'), 10, 3); add_action('admin_menu', array($this, 'admin_menu')); } public function set_screen($status, $option, $value) { return $value; } public function admin_menu() { $hook = add_menu_page('관리자 리스트 테이블', '리스트 테이블', 'manage_options', 'admintable', array($this, 'admin_page'), 'dashicons-admin-post'); add_action("load-$hook", array($this, 'screen_option')); } public function screen_option() { $option = 'per_page'; $args = array( 'label' => 'Customers', 'default' => 10, 'option' => 'customers_per_page' ); add_screen_option($option, $args); $this->_tablelist = new admin_list_table(); } public function admin_page() { echo '<div class="wrap"><h2>리스트 테이블 예제</h2>'; echo '<form method="post">'; $this->_tablelist->prepare_items(); $this->_tablelist->display(); echo '</form>'; echo '</div>'; } } function ATP() { return admin_table_plugin::instance(); } ATP(); function admin_table_activate() { ATP()->install(); } register_activation_hook(__FILE__, 'admin_table_activate');