Générateur de plugin WordPress moderne — PSR-4, DDD léger, PHP 8.4
Génère un squelette de plugin WordPress propre en quelques clics. Architecture PSR-4, custom post types et taxonomies typés, repository avec interface et DTO en lecture seule — toutes les briques d'un plugin maintenable, prêtes à recevoir ta logique métier. Conforme aux standards WordPress et PHP 8.4, livré en ZIP avec un README. Gratuit, sans inscription, sans tracking.
Configurateur
Aperçu
<?php
/**
* Plugin Name: Acme Movies
* Requires PHP: 8.4
* License: GPL-2.0-or-later
*/
declare(strict_types=1);
namespace Acme\Movies;
use Acme\Movies\Plugin\Plugin;
if (! defined('ABSPATH')) {
exit;
}
(new Plugin())->registerHooks();
<?php
declare(strict_types=1);
namespace Acme\Movies\Domain\Movie;
use DateTimeImmutable;
final readonly class Movie
{
public function __construct(
public int $id,
public string $title,
public string $slug,
public string $content,
public string $excerpt,
public ?string $thumbnailUrl,
public DateTimeImmutable $publishedAt,
) {
}
}
Avantages de l'architecture
-
PSR-4 et namespaces stricts — Autoload Composer standard, IDE et PHPStan comprennent ton code, fini les
require_oncepartout. -
Bounded contexts par CPT — Chaque type de contenu vit dans son dossier (
Domain/Movie/), sans dépendre des autres. Tu peux supprimer un CPT en supprimant son dossier. -
DTO immutable, typé en lecture seule —
final readonly class Movieavec props typées. Tes consommateurs (thème, blocks Gutenberg, REST) manipulent un contrat clair, pas duWP_Postmagique. - Repository avec interface — Testabilité immédiate (mock l'interface en test), substituabilité (passer en cache, en remote API, sans toucher au consommateur).
-
Standards WordPress respectés — Nonces sur les meta-boxes, sanitize/escape dans les meta saves,
__()etesc_html__()sur tous les labels, capability checks.
Compatibilité versions
| PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 | |
|---|---|---|---|---|
| WordPress 6.4 | ✓ | ~ | ✕ | ✕ |
| WordPress 6.5 | ✓ | ~ | ✕ | ✕ |
| WordPress 6.6 | ✓ | ✓ | ~ | ✕ |
| WordPress 6.7 | ✓ | ✓ | ~ | ✕ |
| WordPress 6.8 | ✓ | ✓ | β | ✕ |
✓ officiellement supporté · β supporté en beta · ~ non testé par WP core (peut fonctionner) · ✕ non supporté.
Le code généré utilise final readonly class et nécessite PHP 8.2 minimum.
Le tableau reflète le support officiel de WordPress core
(référence) ;
le plugin lui-même tourne sur n'importe quel PHP >= 8.2 si l'environnement le permet.
Exemples générés
- Blog photo — 1 CPT
photoavec taxonomiealbum, Featured activé. 13 fichiers, ~12 Ko zippés. - Multi-CPT magazine — 3 CPT (
article,interview,video) avec leurs taxonomies, Featured sur les articles. 26 fichiers, ~22 Ko zippés. - Annuaire d'événements — 1 CPT
eventavec une taxonomielocation. 13 fichiers, ~12 Ko zippés.
Pour aller plus loin
Questions fréquentes
À qui s'adresse ce générateur ?
Aux développeurs WordPress qui veulent démarrer un plugin sur des bases saines : namespaces PSR-4, types stricts, séparation par contexte métier, repository pattern. Si tu cherches un plugin générique sans architecture, le générateur officiel WordPress.org reste plus adapté.
Quelle est la licence du code généré ?
GPL-2.0-or-later par défaut (compatible WordPress core). Tu peux choisir GPL-3.0-or-later ou MIT dans le formulaire. Le code généré est libre de droits — fais-en ce que tu veux, y compris le distribuer commercialement.
Pourquoi composer install est-il nécessaire après installation ?
Le ZIP ne contient pas le dossier vendor/ — pour rester léger (~10 Ko) et te laisser le contrôle de l'autoload. Une fois le plugin uploadé sur ton WordPress, lance composer install à la racine du plugin pour générer l'autoload PSR-4. C'est une étape de dev, pas de runtime.
Le plugin généré a-t-il des dépendances externes ?
Aucune en runtime. Le composer.json ne déclare que php >= 8.4. Le plugin utilise les fonctions WordPress natives (register_post_type, WP_Query, wp_get_attachment_image_url...) — pas de Timber, pas d'ACF, pas de Carbon Fields requis. Tu peux les ajouter ensuite si ton projet en a besoin.
Pourquoi un DTO Movie plutôt que WP_Post directement ?
Pour que ton thème (ou tout consommateur) manipule des objets typés ($movie->title, autocomplétion, PHPStan strict) au lieu de $post->post_title. Le DTO sert aussi de point d'isolation : si tu changes la source de données un jour (REST, GraphQL, base externe), tu modifies seulement le repository — le reste du code consommateur ne bouge pas.
Mes données sont-elles stockées par le générateur ?
Le ZIP est généré à la volée puis le fichier temporaire est supprimé après envoi. Aucune analytics tierce, aucun cookie de tracking sur cette page. Pour la prévention d'abus, un log technique conserve pendant 30 jours : le slug et namespace du plugin, le nom et URL d'auteur que tu saisis, ton IP anonymisée (dernier octet masqué) et le user-agent (tronqué à 200 caractères). Ce log n'est pas exploité à des fins commerciales et n'est partagé avec aucun tiers.
