Writing Commands
This document explains how to write custom commands in WP Bones. Commands are typically stored in the plugin/Console/Commands
directory. To create a new command, use the php bones make:console MyCommand
command, which generates a new command class. The document provides an example of a generated command class and explains the structure, including setting the signature and description properties and implementing the handle
method. It also covers adding the command class to the plugin/Console/Commands/Kernel.php
file.
Overview
In addition to the commands provided within Bones, you may also build your own custom commands.
Commands are typically stored in the plugin/Console/Commands
directory; however, you are free to choose your own storage location as long as your commands can be loaded by Composer.
Generating Commands
To create a new command, use the make:console
Bones command.
This command will create a new command class in the plugin/Console/Commands
directory.
Don’t worry if this directory does not exist in your plugin, since it will be created the very first time when running the make:command
Bones command.
The generated command will include the default set of properties and methods that are present on all commands:
php bones make:console MyCommand
The above command will generate a class at plugin/Console/Commands/MyCommand.php
. It will generate the file plugin/Console/Kernel.php
if it doesn’t exist. The signature of the command and the command name will be asked in the console.
<?php
namespace WPKirk\Console\Commands;
use WPKirk\WPBones\Console\Command;
class MyCommand extends Command
{
protected $signature = 'wpkirk:sample {--name= : Display your name}';
protected $description = 'Example of bones command';
public function handle()
{
if( $this->options( 'name' ) ) {
$this->line( 'Hello, ' . $this->options( 'name' ) );
} else {
$this->line( 'Hello, World!' );
}
}
}
Command Structure
Once your command is generated, you should fill out the signature and description properties of the class, which will be used when displaying your command on the list screen.
The handle
method will be called when your command is executed. You may place any command logic in this method.
You will also need to add the command class in the plugin/Console/Commands/Kernel.php
file, in the $command
property array.
<?php
namespace WPKirk\Console;
use WPKirk\WPBones\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected $commands = [
'WPKirk\Console\Commands\MyCommand',
];
}
Customizing Deploy
You can customize the deployment process by using the action wpbones_console_deploy_completed
. This is very useful, for example, to delete a folder and write a new file. To do that, you can override the __construct
method in your command.
public function __construct()
{
parent::__construct();
/**
* Fired when the deploy command is completed
*
* @param object $console Instance of WPBones Console
* @param string $path Destination path
*/
add_action('wpbones_console_deploy_completed',
function ($console, $path) {
$console->deleteDirectory("{$path}/my-folder");
}, 10, 2);
}
You will find more actions and filters in the deploy.php
file in the root of your Bones plugin.
That’s another way to customize the deploy process.