3. Khởi tạo chạy class admin (ok)

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

<?php
/**
 * Plugin Name:       Lionel
 * Plugin URI:        #
 * Description:       #
 * Version:           1.10
 * Requires at least: 5.2
 * Requires PHP:      7.2
 * Author:            #
 * Author URI:        https://author.example.com/
 * License:           GPL v2 or later
 * License URI:       https://www.gnu.org/licenses/gpl-2.0.html
 * Text Domain:       lionelplugin
 * Domain Path:       /languages
 */
if (!defined('WPINC')) {
    die;
}
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if (is_plugin_active('woocommerce/woocommerce.php')) {
	run_wpf_ct();
} else {
   add_action('admin_notices', 'wpf_admin_notice_ct');
}
function run_wpf_ct() {
  require plugin_dir_path(__FILE__) . 'includes/class-wpf_ct.php'; 
  $version = WPF_CT::get_plugin_version(__FILE__);
	$wpf = WPF_CT::get_instance();
	$wpf->set_version( $version );
	$wpf->init();
}
function wpf_admin_notice_ct(){
    ?>
    <div class="error">
        <p><?php _e('Themify WooCommerce Product Filter requires the WooCommerce plugin. Please install and activate WooCommerce first, then activate this plugin.', 'wpf'); ?></p>
    </div>
  <?php
}
?>

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;
      echo $this->version;
		}
	}
?>

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__));
    if(is_admin()){
    	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);
  }
}
?>

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

<?php  
	class WPF_Public_CT {
		private $plugin_name;
		private $version;
		public static function get_instance() {
      static $instance = null;
      if ( $instance === null ) {
          $instance = new self;
      }
      return $instance;
    }
    private function __construct() {
    	$this->plugin_name = WPF_CT::get_instance()->get_plugin_name();
    }
	}
?>

Last updated