web-dev-qa-db-fra.com

Déplacez les modèles de thème dans un sous-dossier sans perdre les associations de pages

Je suis conscient que les modèles peuvent résider dans un sous-dossier d'un thème depuis la version 3.4.

Mon thème existe depuis un moment et tous nos modèles résident dans le répertoire des thèmes. J'aimerais régler cette question en les ajoutant à des sous-dossiers, mais si vous les déplacez, toutes les pages perdraient leurs modèles. Ce qui serait difficile à corriger pour une quarantaine de pages modèles ...

Existe-t-il un filtre wordpress, un crochet ou une autre méthode pouvant être utilisée pour vérifier l'emplacement du modèle? Que puis-je utiliser pour vérifier les modèles manquants? Google ne révèle rien d'utile.

Quelqu'un a-t-il d'autres idées basées sur WordPress?

(Je sais que je pourrais essayer de lancer une requête pour mettre à jour les emplacements des modèles, mais je préférerais ne pas modifier directement la base de données si je peux l'éviter.)

Merci!

1
josh

Vous pouvez accrocher le filtre page_template et vérifier si la page actuelle a une clé méta _wp_page_template. Si tel est le cas, vous pouvez vérifier si file_exists apparaît dans le nouvel emplacement des modèles, puis update_post_meta pour ajouter le nouveau nom du répertoire.

3
Milo

Vous pouvez notamment tirer parti de la hiérarchie des modèles, des fonctions de balises conditionnelles wordpress et des éléments de modèles.

Utilisez index.php avec des vérifications conditionnelles telles que is_archive(), is_page(), is_single(), etc. Ensuite, sous chaque bloc, chargez un modèle .

Par exemple.

if ( is_archive() ) {
  if ( is_tag() ) {
    get_template_part( 'archives/', 'tag' );
  } elseif ( is_category() ) {
    get_template_part( 'archives/', 'category' );
  }
}

get_template_part (lien ci-dessus) vous permet de charger à partir d'un sous-répertoire. Vous pouvez utiliser le premier argument pour inclure un sous-répertoire si vous incluez une barre oblique de fin et le second argument pour utiliser le nom de base du fichier php. L'avantage de cela est qu'un thème enfant peut remplacer le modèle en utilisant le même sous-dossier et le même nom de fichier.

Continuez à utiliser les autres fonctions de balises conditionnelles documentées et vous pourrez ensuite charger les modèles de votre choix. De plus, vous pouvez réutiliser des éléments de modèle si nécessaire.

0
highvolt