wpdesk/wp-init

Bootstrap for a WordPress plugin

0.10.2 2024-10-08 06:45 UTC

This package is auto-updated.

Last update: 2024-10-20 12:55:23 UTC


README

Boot your plugin with superpowers.

Installation

To use this library in your project, add it to composer.json:

composer require wpdesk/wp-init

Creating a Plugin

Preferred method of using this library exercise Object Oriented Programming and organizing your actions and filters in a multiple classes, although it isn't the only way you can interact (and benefit from this library).

The plugin initialization consists of the following steps:

  1. Create a regular main plugin file, following header requirements
  2. Prepare DI container definitions for your services.
  3. Declare all classes included in hook binding.

The above limits your main plugin file to a short and simple structure.

<?php
/**
 * Plugin Name: Example Plugin
 */

use WPDesk\Init\Init;

require __DIR__ . '/vendor/autoload.php';

Init::setup('config.php')->boot();

Plugin configuration

For plugin configuration, you may focus on succinct, declarative configuration.

Supported configuration:

<?php

return [
	'hook_resources_path' => 'config/hook_providers',
	'services' => 'config/services.inc.php',
	'cache_path' => 'generated',

	'requirements' => [
		'plugins' => [
			'name' => 'woocommerce/woocommerce.php',
			'nice_name' => 'WooCommerce',
		]
	],

	'plugin_class_name' => 'Example\Plugin',
];

Usage with wpdesk/wp-builder

As a legacy support, it is possible to power up your existing codebase, which uses wpdesk/wp-builder with this library capabilities, as autowired services.

The only change, you have to do (besides configuration of services) is adding hookables as class string, ready for handling by DI container:

- $this->add_hookable( new \WPDesk\Init\Provider\I18n() );
+ $this->add_hookable( \WPDesk\Init\Provider\I18n::class );

Credits

This package is heavily inspired by Cedaro's wp-plugin and Alain Schlesser's basic-scaffold.

License

Copyright (c) 2024 WPDesk

This library is licensed under MIT.