Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
WordPress Plugin Boilerplate
<?php
/*
Plugin Name: Plugin Boilerplate
Plugin URI: https://themecoder.de/
Description: My boilerplate for WordPress Plugins
Author: Thomas Weichselbaumer
Author URI: http://netzberufler.de
Version: 1.0
Text Domain: plugin-boilerplate
Domain Path: /languages/
License: GPL v3
License URI: http://www.gnu.org/licenses/gpl-3.0.html
Plugin Boilerplate
Copyright(C) 2016, Thomas Weichselbaumer - kontakt@themecoder.de
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Main Plugin_Boilerplate Class
*
* @package Plugin Boilerplate
*/
class Plugin_Boilerplate {
/**
* Call all Functions to setup the Plugin
*
* @uses Plugin_Boilerplate::constants() Setup the constants needed
* @uses Plugin_Boilerplate::includes() Include the required files
* @uses Plugin_Boilerplate::setup_actions() Setup the hooks and actions
* @return void
*/
static function setup() {
// Setup Constants.
self::constants();
// Setup Translation.
add_action( 'plugins_loaded', array( __CLASS__, 'translation' ) );
// Include Files.
self::includes();
// Setup Action Hooks.
self::setup_actions();
}
/**
* Setup plugin constants
*
* @return void
*/
static function constants() {
// Define Plugin Name.
define( 'PLUGIN_BOILERPLATE_NAME', 'Plugin Boilerplate' );
// Define Version Number.
define( 'PLUGIN_BOILERPLATE_VERSION', 1.0 );
// Plugin Folder Path.
define( 'PLUGIN_BOILERPLATE_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
// Plugin Folder URL.
define( 'PLUGIN_BOILERPLATE_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
// Plugin Root File.
define( 'PLUGIN_BOILERPLATE_PLUGIN_FILE', __FILE__ );
}
/**
* Load Translation File
*
* @return void
*/
static function translation() {
load_plugin_textdomain( 'plugin-boilerplate', false, dirname( plugin_basename( PLUGIN_BOILERPLATE_PLUGIN_FILE ) ) . '/languages/' );
}
/**
* Include required files
*
* @return void
*/
static function includes() {
// Include Admin Classes.
require_once PLUGIN_BOILERPLATE_PLUGIN_DIR . '/includes/admin/class-plugin-boilerplate-settings.php';
require_once PLUGIN_BOILERPLATE_PLUGIN_DIR . '/includes/admin/class-plugin-boilerplate-settings-page.php';
// Include Plugin Classes.
require_once PLUGIN_BOILERPLATE_PLUGIN_DIR . '/includes/class-plugin-features.php';
}
/**
* Setup Action Hooks
*
* @see https://codex.wordpress.org/Function_Reference/add_action WordPress Codex
* @return void
*/
static function setup_actions() {
// Enqueue Stylesheet.
add_action( 'wp_enqueue_scripts', array( __CLASS__, 'enqueue_styles' ) );
}
/**
* Enqueue Stylesheet
*
* @return void
*/
static function enqueue_styles() {
// Enqueue Plugin Stylesheet.
wp_enqueue_style( 'plugin-boilerplate', PLUGIN_BOILERPLATE_PLUGIN_URL . 'assets/css/plugin-boilerplate.css', array(), PLUGIN_BOILERPLATE_VERSION );
}
}
// Run Plugin.
Plugin_Boilerplate::setup();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment