alleyinteractive/composer-wordpress-autoloader

Autoload files using WordPress File Conventions using Composer

v1.1.0 2023-12-06 20:21 UTC

README

Latest Version on Packagist Tests

Autoload WordPress files configured via Composer that support the WordPress Coding Standards using alleyinteractive/wordpress-autoloader. Will load the autoloaded classes defined in your package and all autoloaded classes in your dependencies.

Installation

You can install the package via Composer:

composer require alleyinteractive/composer-wordpress-autoloader

Usage

{
  "autoload": {
    "wordpress": {
      "My_Plugin_Namespace\\": "src/",
    }
  },
  "autoload-dev": {
    "wordpress": {
      "My_Plugin_Namespace\\Tests\\": "tests/",
    }
  }
}

Once added, you can load vendor/autoload.php as normal and the autoloader will handle the rest. If that doesn't work, see Automatically Injecting WordPress Autoloader.

Use Inside Packages Published to Packagist

Packages published to Packagist are required to be valid and have a composer.json that passed a composer validate. Composer does not consider wordpress to be a valid value inside of the autoload or autoload-dev property. To allow packages to register autoloading in a valid format, you can use the following format:

{
  "extra": {
    "wordpress-autoloader": {
      "autoload": {
        "My_Plugin_Namespace\\": "src/",
      },
      "autoload-dev": {
        "My_Plugin_Namespace\\Tests\\": "tests/",
      }
    }
  }
}

Automatically Injecting WordPress Autoloader

By default Composer WordPress Autoloader will automatically load the WordPress autoloader. This is done by adding src/autoload.php as an autoloaded file to Composer. However, this may not always work under some circumstances including symlinks. When necessary, you can opt to inject the vendor/wordpress-autoload.php file into your vendor/autoload.php file. This is disabled by default and be enabled by setting inject to true in your composer.json.

{
  "extra": {
    "wordpress-autoloader": {
      "inject": true
    }
  }
}

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.