5. Tạo tiêu đề và button add new back-end (ok)

C:\xampp\htdocs\test\wp-content\plugins\plugin-name\admin\class-wpf-admin_ct.php

<?php
class WPF_Admin_CT {
  private $plugin_name;
  private $version;
  public function __construct($plugin_name, $version) {
    $this->plugin_name = $plugin_name;
    $this->version     = $version;
    add_action('admin_menu', array($this, 'add_plugin_admin_menu_ct'));
  }
  public function add_plugin_admin_menu_ct() {
    add_menu_page(
      __('Product Filters', 'wpf_ct'), __('Lionel Product Filters', 'wpf_ct'), 'manage_options', 'wpf_search_ct', array($this, 'display_search_forms_ct'), 'dashicons-welcome-write-blog', '50'
    );
    $this->plugin_about_page();
  }
  public function plugin_about_page() {
    add_submenu_page(
      'wpf_search_ct',
      __('About', 'wpf'),
      __('About', 'wpf'),
      'manage_options',
      'wpf_about',
      array($this, 'create_about_page')
    );
  }
  public function display_search_forms_ct() {
    include_once( 'partials/list_ct.php' );
  }
}
?>

C:\xampp\htdocs\test\wp-content\plugins\plugin-name\admin\partials\list_ct.php

<?php  
	$cptListTable = new WPF_List_Table_CT($this->plugin_name, $this->version);
	$cptListTable->prepare_items();
?>
<div class="wrap">
	<h2>
			<?php  _e('WooCommerce Product Filters', 'wpf_ct'); ?>
			<a onclick="javascript:void(0);" title="<?php _e('Edit Product Filter Form','wpf_ct')?>" class="add-new-h2 wpf_lightbox" href="<?php echo add_query_arg(array('action'=>'wpf_add','nonce'=>wp_create_nonce($this->plugin_name . '_edit')),admin_url('admin-ajax.php'))?>"><?php _e('Add new', 'wpf_ct')?></a>
	</h2>
</div>

C:\xampp\htdocs\test\wp-content\plugins\plugin-name\includes\class-wpf_ct.php

<?php
class WPF_CT {
  private static $plugin_name;
  private static $version;
  public static function get_instance() {
    static $instance = null;
    if ($instance === null) {
      $instance = new self;
    }
    return $instance;
  }
  private function __construct() {}
  public function init() {
    self::$plugin_name = 'wpf_ct';
    $this->load_dependencies();
    if ( is_admin() ) {
			$this->define_admin_hooks();
    }
    if ( !is_admin() ) {
			$this->define_public_hooks();
    }
  }
  private function load_dependencies() {
    $plugindir = plugin_dir_path(dirname(__FILE__));
    require_once $plugindir . 'includes/class-wpf-options_ct.php';
    require_once $plugindir . 'includes/class-wpf-form_ct.php';
    if(is_admin()){
    	require_once $plugindir . 'includes/class-wpf-list_ct.php';
    	require_once $plugindir . 'admin/class-wpf-admin_ct.php';
    }
    if(!is_admin()){
    	require_once $plugindir . 'public/class-wpf-public_ct.php';
    }
  }
  public function get_plugin_name() {
    return self::$plugin_name;
  }
  private function define_public_hooks() {
    if ( ! is_admin()) {
    	WPF_Public_CT::get_instance();
    }
  }
  public function set_version( $version ) {
    self::$version = $version;
  }
  public static function get_plugin_version($plugin_url) {
    $plugin_data = get_file_data($plugin_url, array('ver' => 'Version'));
    return $plugin_data['ver'];
  }
  private function define_admin_hooks() {
    new WPF_Admin_CT(self::$plugin_name, self::$version);
  }
}
?>

Last updated