web-dev-qa-db-fra.com

register_theme_directory "échoue" quand le dossier est en dehors de WP-Folder

Ceci est un squelette simple pour WordPress, qui permet de n'avoir que des "thèmes" et des "plugins" sous contrôle de version:

https://github.com/sourcerer-mike/WordPress-GIT-Skeleton

Lorsque vous utilisez register_theme_directory(__DIR__ . '/themes'); avec un dossier situé en dehors de WP, le thème est affiché dans le backend et peut être activé.

Mais lors de la visualisation de la face avant, la page reste vierge.

Je suppose que c'est au dossier d'être au-dessus d'un niveau et inaccessible pour le client. Mais le serveur peut y accéder, alors je pense avoir fait quelque chose de mal.

Existe-t-il une solution pour avoir des thèmes en dehors de WP mais qui fonctionnent toujours? (sinon register_theme_directory est un peu inutile)

Ou y a-t-il une meilleure solution pour avoir ces deux à l'extérieur? (J'ai aussi besoin de m'occuper d'un développeur pas aussi expérimenté ici)

Ma structure de dossier est comme ceci:

├── plugins
├── public (document root of Apache)
│   ├── wp-admin
│   ├── wp-content
│   │   ├── plugins
│   │   └── themes
│   │       ├── twentyeleven
│   │       ├── twentyten
│   │       ├── twentythirteen
│   │       └── twentytwelve
│   │       └── twentyfourteen
│   └── wp-includes
├── themes
│   └── foo
└── uploads

Dès que je change de thème "foo", l'interface reste blanche et vide (pas de sortie unique).

2
LeMike

Bien que je ne puisse pas parler de votre problème spécifique d’écran blanc, les répertoires de thèmes enregistrés doivent au minimum se trouver dans la racine du document Apache.

De nombreux fichiers de thèmes, tels que CSS, JS, images, etc., sont directement servis par le serveur Web, et non via des appels à WordPress. Donc, avoir un répertoire de thèmes qui n'est pas directement accessible et utilisable par le processus du serveur Web ne fonctionnera clairement pas.

2
Otto