Installation

Detailed installation and setup instructions for WPZylos Framework.

System Requirements

RequirementMinimumRecommended
PHP8.08.1+
WordPress6.06.4+
Composer2.02.6+
MySQL5.78.0+

PHP Extensions

Required:

  • json
  • mbstring
  • dom

Recommended:

  • opcache
  • intl

Installation Methods

The scaffold generates a complete plugin structure:

# In wp-content/plugins
composer create-project wpzylos/plugin-skeleton my-plugin
cd my-plugin

Method 2: Composer Require

Add individual packages to an existing plugin:

composer require wpzylos/core
composer require wpzylos/container
composer require wpzylos/hooks
composer require wpzylos/security

Method 3: Full Framework

Require all packages at once:

composer require wpzylos/framework

Package Dependencies

graph TD
    A[wpzylos/scaffold] --> B[wpzylos/core]
    B --> C[wpzylos/container]
    B --> D[wpzylos/hooks]
    B --> E[wpzylos/config]

    F[wpzylos/security] --> B
    G[wpzylos/http] --> B
    H[wpzylos/routing] --> G
    I[wpzylos/validation] --> B
    J[wpzylos/views] --> B
    K[wpzylos/database] --> B
    L[wpzylos/migrations] --> K
    M[wpzylos/i18n] --> B

    N[wpzylos/cli-core] --> B
    O[wpzylos/cli-devtool] --> N
    P[wpzylos/wp-cli] --> N

Composer Configuration

composer.json

{
  "name": "vendor/my-plugin",
  "type": "wordpress-plugin",
  "require": {
    "php": ">=8.0",
    "wpzylos/core": "^1.0",
    "wpzylos/container": "^1.0",
    "wpzylos/hooks": "^1.0",
    "wpzylos/security": "^1.0",
    "wpzylos/routing": "^1.0",
    "wpzylos/views": "^1.0"
  },
  "require-dev": {
    "phpunit/phpunit": "^10.0",
    "phpstan/phpstan": "^1.10"
  },
  "autoload": {
    "psr-4": {
      "Vendor\\MyPlugin\\": "src/"
    }
  },
  "autoload-dev": {
    "psr-4": {
      "Vendor\\MyPlugin\\Tests\\": "tests/"
    }
  }
}

PSR-4 Autoloading

WPZylos uses PSR-4 autoloading. Your classes should follow this structure:

src/
+-- Http/
|   +-- Controllers/
|       +-- AdminController.php  → Vendor\MyPlugin\Http\Controllers\AdminController
+-- Models/
|   +-- User.php                 → Vendor\MyPlugin\Models\User
+-- Providers/
    +-- AppServiceProvider.php   → Vendor\MyPlugin\Providers\AppServiceProvider

Development Dependencies

For development, add these packages:

composer require --dev phpunit/phpunit
composer require --dev phpstan/phpstan
composer require --dev squizlabs/php_codesniffer

WordPress Multisite

WPZylos works on multisite installations. Each site shares the same plugin code but maintains isolated data through prefixed options and transients.

// Options are automatically prefixed per-plugin
$context->option('settings'); // Returns: map_settings

// On multisite, WordPress handles site-specific options natively
get_option('map_settings'); // Site-specific
get_site_option('map_network_settings'); // Network-wide

Verifying Installation

After installation, verify the framework is loaded:

// In your plugin's main file
add_action('admin_notices', function () {
    if (!class_exists(\WPZylos\Framework\Core\Application::class)) {
        echo '<div class="notice notice-error"><p>WPZylos not loaded!</p></div>';
    }
});

Troubleshooting Installation

Composer Memory Limit

COMPOSER_MEMORY_LIMIT=-1 composer require wpzylos/core

Autoload Not Found

composer dump-autoload -o

Version Conflicts

composer why-not wpzylos/core 1.0.0
composer update --with-all-dependencies

Next Steps