wp-kit: docs
Declare a feature once and expose it as a REST route, a WP-CLI command and a WordPress Ability.
Generated from the public repository wp-kit(opens in a new tab) at release v2.0.3.
Install
composer require mammothwp/wp-kit Usage snippets
Taken from the repository's README and docs.
// Composer's autoload.files requires bootstrap.php; nothing else to include.
\MammothWP\WpKit\Kit::on_ready(function () {
// declare resources, register adapters
}); use MammothWP\WpKit\{Field, Operation, Resource};
final class Things_Resource extends Resource
{
public function name() { return 'things'; }
public function service() { return Things_Service::instance(); }
public function rest_namespace() { return 'my-plugin/v1'; }
public function cli_base() { return 'my-plugin things'; }
public function ability_category() { return 'my-plugin-things'; }
public function operations()
{
return [
'list' => Operation::read('list_items')
->label('List things')
->input([
Field::enum('status', ['enabled', 'disabled'])->multiple(),
Field::int('limit')->default_value(50)->max(200)->describe('Rows to return.'),
])
->rest('GET')
->cli('list', ['columns' => ['id', 'title', 'status']])
->ability('list-things'),
'delete' => Operation::destructive('delete_items')
->input([Field::int_list('ids')->positional()->required()])
->rest('DELETE', '/delete/')
->cli('delete', ['success' => 'Deleted %count% thing(s).'])
->ability('delete-things'),
];
}
} $registry = (new \MammothWP\WpKit\Registry())->add(new Things_Resource())->ready();
foreach ($registry->all() as $resource) {
(new \MammothWP\WpKit\Adapters\Rest_Adapter($resource))->register();
(new \MammothWP\WpKit\Adapters\Cli_Adapter($resource))->register();
(new \MammothWP\WpKit\Adapters\Ability_Adapter($resource))->register();
} class Admin_Helpers_Resource extends Resource
{
/** No meaningful CLI for editor helpers: register REST and abilities only. */
public function surfaces()
{
return [Context::REST, Context::ABILITY];
}
public function surfaces_reason()
{
return 'editor helpers have no command-line use';
}
} In these docs
3 actions, 3 filters.
Routes and commands that are built from declared resources at run time are described on the REST and command pages.