web-dev-qa-db-fra.com

Nom de projet WordPress conforme aux normes FIG

J'essaie de comprendre les espaces de noms, les autochargeurs et les normes FIG, mais surtout comment parvenir à une intégration aussi proche que possible de WordPress.

Voici ma structure de fichier, créée à l'aide de la pile impressionnante de WordPress roots .

|-- /web
|   |-- /app
|   |   |-- /mu-plugins
|   |   |   |-- autoload.php
|   |   |   |-- /cibulka-mu-base                 // abstract classes, traits, ... for features
|   |   |   |-- /cibulka-mu-feature-1            // features as custom post types, theme support, forms, ...
|   |   |   |-- /cibulka-mu-feature-2            // features as custom post types, theme support, forms, ...
|   |   |-- /themes
|   |   |   |-- /cibulka-parent-theme
|   |   |   |   |-- functions.php                // plays with MU plugins, sets default config
|   |   |   |-- /cibulka-child-theme
|   |   |   |   |-- functions.php                // plays with MU plugins, overrides default config
|   |   |-- /plugins
|   |   |   |-- /akismet
|   |   |   |-- /other third party software
|   |-- /wp
|   |   |-- /wp-admin
|   |   |-- /wp-includes
|   |   |-- etc.

Comment imiter la structure de fichiers par des espaces de noms et dans le même temps, autant que possible avec FIG-friendly? Dans le même temps, "les packages" de "l'application" doivent être stockés dans des dossiers distincts afin qu'ils puissent être requis par les fichiers composer.json et surveillés par GIT.

J'ai essayé beaucoup d'options, mais pour être honnête, je suis un peu dépassé par le nombre de solutions possibles et par le fait qu'aucune d'entre elles n'est vraiment idéale.

Pouvez-vous me dire ce qui a été utile dans vos cas?

Edit: itinéraires possibles

  • en suivant complètement la structure du répertoire: web\app\muPlugins\CibulkaMuBase etc.
  • "fake" répertoire du vendeur: cibulka\MU\Base, cibulka\themes\parentTheme, ...
  • manipulation ultérieure de la structure de répertoires WP - options limitées, compliquant à peu près tout le reste, mauvaise compatibilité, ...
  • quelque chose de plus intelligent ?
4
Petr Cibulka

Vous réfléchissez à cela. La structure de l'espace de noms s'applique au niveau du package individuel. Il n’est pas nécessaire ou Push de traiter l’ensemble du site en tant que tel package.

En outre, l'un des avantages de l'utilisation de l'autoload en premier lieu est que cela rend l'emplacement des classes dans le système de fichiers en grande partie inutile.

L’approche simple et pratique consiste donc à:

  1. Gérer les espaces de noms au niveau du package individuel (plugin/thème).
  2. Utilisez le support PSR-4 dans Composer pour une structure de répertoires simple dans des packages, sans niveaux de dossier excessifs.
2
Rarst