web-dev-qa-db-fra.com

Pourquoi les modèles de thème sont-ils organisés en plusieurs points d'entrée? PHP fichiers au lieu de réutiliser le fichier index.php de votre thème?

J'ai commencé à développer mon propre thème au cours des deux dernières semaines (et à extraire WP des fonctionnalités ici et là au cours de l'année écoulée), et je trouve la structure du WP modèles terriblement redondants.

Bien que oui, techniquement, le blog commence plus haut pour charger la fonctionnalité WP, le principal objet WP_Query et la préparation de variables globales - je ne comprends pas pourquoi tous les thèmes que je suis tombés sur far divise les fichiers de modèle en:

  • 404.php;
  • archive.php;
  • index.php;
  • single.php;
  • page.php;
  • search.php;
  • ... etc;

Ces fichiers dupliquent en gros beaucoup de code PHP pour récupérer l'en-tête, la barre latérale et le pied de page.

Ne serait-il pas plus propre d’avoir un (1) fichier index.php qui comprend l’en-tête , ? Barre latérale , Pied de page ... et dans le fichier index.php - vous pouvez décider comment afficher le contenu?

Je ne suis pas sûr de comprendre le besoin d'avoir des fichiers séparés.

Si vous devez changer le titre dans votre balise <head>, pourquoi ne pas utiliser la puissance de buffing de sortie (ob_start() et ob_end_clean()) pour obtenir les publications en premier/la page/la publication individuelle/les résultats de la recherche ... Existe-t-il des problèmes de performances lors de l'utilisation de cette technique?

Pourrais-je avoir des problèmes si je souhaite que mon thème soit compatible avec les appareils mobiles et soit lisible par les lecteurs de fils RSS ?

-------------- EDIT:

Je soulève cette question car il existe PHP méthodes permettant de détecter la section dans laquelle l'utilisateur se trouve (ex: is_single(), is_page(), is_archive(), is_home(), etc ...) et j'aimerais savoir si ceux-ci pourraient être utilisés pour atteindre un point central pour mon fichier index.php.

2
bigp

Les fichiers de modèle de thème sont organisés de cette manière en raison de la hiérarchie de modèles WordPress . Etant donné que tous les fichiers de modèle primaires retombent finalement sur index.php, il est certainement possible d’utiliser uniquement le fichier de modèle primaire index.php. L'utilisation de l'une ou l'autre méthode présente des avantages et des inconvénients.

De manière générale, l’utilité/efficacité de la définition des fichiers de modèle est inversement proportionnelle à la complexité contextuelle du thème. Si la sortie de votre thème ne change pas en fonction du contexte, comme défini dans la hiérarchie des modèles, utiliser uniquement un fichier index.php est tout à fait logique. Toutefois, il est de plus en plus difficile d’implémenter des sorties contextuelles plus complexes et spécifiques au contexte en utilisant uniquement des balises de modèle conditionnelles basées sur une requête (par exemple, is_single(), is_archive(), is_category(), is_404(), etc.) à l’intérieur de index.php.

Cependant, c'est une mauvaise idée:

Si vous devez modifier le titre dans votre balise <head>, pourquoi ne pas utiliser la puissance de pour mettre en cache la sortie (ob_start() et ob_end_clean()) pour obtenir les publications en premier/la page/la publication unique/les résultats de la recherche ... Cette technique pose-t-elle des problèmes de performances?

Il n'y a pas besoin de tampon de sortie. Vous devez utiliser l'une des méthodes suivantes:

  1. Le hook de filtre the_title pour changer la sortie de wp_title() de manière contextuelle
  2. Transmettez une variable contextuellement définie directement à la balise de modèle wp_title()
3
Chip Bennett

Vous pouvez réellement utiliser un seul index.php pour créer votre thème WordPress. tout ce dont vous avez besoin, c'est d'un style.css et d'un index.php (avec le pied de page et l'en-tête), tout dépend du développeur du thème. Je l’ai souvent fait pour la conception classique de blocs à l’ancienne, mais aujourd’hui, lors de la conception de thèmes complexes pour CMS et Magazine; utiliser différents fichiers selon Hiérarchie des modèles WordPress simplifie grandement les choses.

La personnalisation devient beaucoup plus facile pour les débutants qui ne sont pas familiers avec les fonctions PHP mais qui maîtrisent bien CSS/XHTML.

2
Mehmet