wordpress plugin boilerplate
- Get link
- X
- Other Apps
Ideal Folder Structure (Industry-standard)
log-manager/
│
├── log-manager.php (Main plugin file)
│
├── includes/
│ ├── class-log-manager.php
│ ├── class-log-manager-admin.php
│ ├── class-log-manager-logger.php
│ └── class-log-manager-db.php
│
├── assets/
│ ├── css/
│ └── js/
│
└── uninstall.php
1️⃣ Main Plugin File (log-manager.php)
👉 ONLY bootstraps the plugin
<?php
/**
* Plugin Name: Log Manager
* Description: WordPress Log Manager Plugin
* Version: 1.0.0
*/
if (!defined('ABSPATH')) exit;
define('LM_PATH', plugin_dir_path(__FILE__));
define('LM_URL', plugin_dir_url(__FILE__));
require_once LM_PATH . 'includes/class-log-manager.php';
function run_log_manager() {
$plugin = new Log_Manager();
$plugin->run();
}
run_log_manager();
2️⃣ Core Plugin Class (class-log-manager.php)
👉 Controls everything
<?php
class Log_Manager {
public function __construct() {
$this->load_dependencies();
}
private function load_dependencies() {
require_once LM_PATH . 'includes/class-log-manager-admin.php';
require_once LM_PATH . 'includes/class-log-manager-logger.php';
require_once LM_PATH . 'includes/class-log-manager-db.php';
}
public function run() {
new Log_Manager_Admin();
new Log_Manager_Logger();
}
}
3️⃣ Admin Class (class-log-manager-admin.php)
👉 Admin menu, pages, UI
<?php
class Log_Manager_Admin {
public function __construct() {
add_action('admin_menu', [$this, 'add_menu']);
}
public function add_menu() {
add_menu_page(
'Log Manager',
'Log Manager',
'manage_options',
'log-manager',
[$this, 'render_page'],
'dashicons-list-view'
);
}
public function render_page() {
echo '<div class="wrap"><h1>Log Manager</h1></div>';
}
}
4️⃣ Logger Class (class-log-manager-logger.php)
👉 Actual log writing
<?php
class Log_Manager_Logger {
public function __construct() {
add_action('init', [$this, 'capture_logs']);
}
public function capture_logs() {
// example
$this->write_log('Plugin initialized');
}
public function write_log($message) {
global $wpdb;
$table = $wpdb->prefix . 'log_manager';
$wpdb->insert($table, [
'message' => $message,
'created_at' => current_time('mysql')
]);
}
}
5️⃣ DB Class (class-log-manager-db.php)
👉 Table creation
<?php
class Log_Manager_DB {
public static function create_table() {
global $wpdb;
$table = $wpdb->prefix . 'log_manager';
$charset = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
message TEXT,
created_at DATETIME
) $charset;";
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
dbDelta($sql);
}
}
================================================================
Activation hook (in main file):
register_activation_hook(__FILE__, ['Log_Manager_DB', 'create_table']);
=========================================================================uninstall.php
<?php
/**
* Fired when the plugin is uninstalled.
* @link https://microcodes.in
* @since 1.0.0
*
* @package Log_Manager
*/
// If uninstall not called from WordPress, then exit.
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
exit;
}
Request for HR Guidance Regarding Performance Review and Next Steps
- Get link
- X
- Other Apps