Create your WordPress plugin in weeks, not months. Rapidly prototype and deliver your plugin with confidence!
Light Mode | Dark Mode |
---|---|
The plugin consists of two main components: the frontend, built with React, and the backend, which communicates via an API.
To get started, you need to clone the repository and install the dependencies. Then you can rename the plugin and start development. It's that simple!
git clone https://github.com/prappo/wordpress-plugin-boilerplate.git
npm install
composer install
You can easly rename the plugin by changing data in plugin-config.json
file.
{
"plugin_name":"WordPress Plugin Boilerplate",
"plugin_description":"A boilerplate for WordPress plugins.",
"plugin_version":"1.0.0",
"plugin_file_name":"wordpress-plugin-boilerplate.php",
"author_name":"Prappo",
"author_uri":"https://prappo.github.io",
"text_domain":"wordpress-plugin-boilerplate",
"domain_path":"/languages",
"main_class_name":"WordPressPluginBoilerplate",
"main_function_name":"wordpress_plugin_boilerplate_init",
"namespace":"WordPressPluginBoilerplate",
"plugin_prefix":"wpb",
"constant_prefix":"WPB"
}
Then run the following command to rename the plugin
npm run rename
π wordpress-plugin-boilerplate
-
π config
π plugin.php
-
π database
-
π Migrations
π create_posts_table.php
π create_users_table.php
-
π Seeders
π PostSeeder.php
π UserSeeder.php
-
π includes
π Admin
π Controllers
π Core
π Frontend
π Interfaces
π Models
π Routes
π Traits
π functions.php
π src
π admin
π frontend
π blocks
π libs
π views
π vendor
π plugin.php
π uninstall.php
π wordpress-plugin-boilerplate.php
Add your API route in includes/Routes/Api.php
Route::get( $prefix, $endpoint, $callback, $auth = false );
Route::post( $prefix, $endpoint, $callback, $auth = false );
// Route grouping.
Route::prefix( $prefix, function( Route $route ) {
$route->get( $endpoint, $callback, $auth = false );
$route->post( $endpoint, $callback, $auth = false );
});
// Get All posts
$route->get( '/posts/get', '\WordPressPluginBoilerplate\Controllers\Posts\Actions@get_all_posts' );
// Get Single Posts
$route->get( '/posts/get/{id}', '\WordPressPluginBoilerplate\Controllers\Posts\Actions@get_post' );
If you are familiar with Laravel, you will find this ORM very familiar. It is a simple and easy-to-use ORM for WordPress.
You can find the ORM documentation here
Create your model in includes/Models
folder.
Example: includes/Models/Posts.php
<?php
namespace WordPressPluginBoilerplate\Models;
use Prappo\WpEloquent\Database\Eloquent\Model;
class Posts extends Model {
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'posts';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = array( 'post_title', 'post_content' );
}
You can access all your posts like this:
$posts = Posts::all();
You can also create a new post like this:
$post = Posts::create( array( 'post_title' => 'Hello World', 'post_content' => 'This is a test post' ) );
You can also update a post like this:
$post = Posts::find( 1 );
$post->post_title = 'Hello World';
$post->save();
You can also delete a post like this:
$post = Posts::find( 1 );
$post->delete();
You can also use the where
method to filter your posts.
$posts = Posts::where( 'post_title', 'like', '%hello%' )->get();
You can also use the orderBy
method to sort your posts.
$posts = Posts::orderBy( 'post_title', 'desc' )->get();
Just pass your data to the array in the Asset file.
For example: For admin:
wordpress-plugin-boilerplate/includes/Assets/Frontend.php
Lines 104 to 110 in 8d982b6
And access data on react like this
Remember the object wordpressPluginBoilerplateFrontend
name can be defined here
npm run dev
npm run dev:server
npm run build
npm run block:start
npm run block:build
npm run release
It will create a relase plugin in release
folder