Skip to content
Snippets Groups Projects
Select Git revision
  • b33d5e9f470100f79752be4d160a6a2fa2228cbb
  • main default protected
  • v0.10
  • 0.10.6
  • 0.10.5
  • 0.10.4
  • 0.10.3
  • 0.10.2
  • 0.10.1
  • 0.10.0
  • 0.9.1
  • 0.9.0
12 results

README.md

Blame
  • WordPress plugin initializer

    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.