wordpress plugin boilerplate

 

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


Popular posts from this blog

MCSL 216 MCA NEW Practical ~ common questions suggestions

jitsi

dev chaeatsheet