web-dev-qa-db-ger.com

Was sind die VORTEILE der ORIGINAL WordPress-Vorlagenstruktur?

Voraussetzung: Aus einer benutzerdefinierten PHP -Anwendung (unter Verwendung von Symfony, Zend usw.). Für mich ist es unnatürlich, Vorlagen auf eine Weise zu trennen, die im ursprünglichen WordPress-Design erfolgt. Beispielsweise befindet sich der obere Teil einer Seite in der Kopfzeile, die Mitte in einem "Index, Seite ..." und der untere Teil in einer Fußzeile.

beispiel für die aktuelle Struktur: index.php

[include header]
... main content...
[include footer]

und header.php

<html>
    <head>
      ....
    </head>
    <body>
      .....

und footer.php

       .....
   </body>
</html>

Ich bin eher an die Struktur gewöhnt, in der Sie ein Layout haben und in der andere (Teil-) Vorlagen enthalten sind. Beispiel: index.php template

    <html>
      <head> [include header] </head> 
      <body> 
          [include body] [include    footer] 
      </body> 
    </html>

Ich versuche also, über die Vorteile der ursprünglichen WordPress-Vorlagenstruktur nachzudenken.

Frage: Was sind die VORTEILE der ORIGINAL WordPress-Template-Struktur im Gegensatz zu dem zweiten Beispiel, das ich oben beschrieben habe?

6
simple

Erstens, wie @Toscho impliziert, enthalten die get_header() und get_footer() Template-Tags einfach Dateien mit den Namen header.php bzw. footer.php. Beide Vorlagen-Tags werden in template -Dateien aufgerufen. Sie können den Inhalt nach Belieben zwischen template -Datei (index.php) und template part -Datei (header.php, footer.php) trennen. Also, WordPress kann sicherlich Ihrem letzteren Beispiel gerecht werden.

Die eigentliche Stärke der standardmäßigen "WordPress" -Methode zum Trennen von Inhalten ergibt sich jedoch aus der WordPress-Vorlagenhierarchie . In WordPress ist die index.php-Datei tatsächlich die last -Vorlagendatei, die verwendet wurde. Es ist die Standard-Fallback-Vorlagendatei, wenn keine andere spezifischere Vorlagendatei gefunden wird:

WordPress Template Hierarchy

Da eine von 7 (primären) bis 16 (sekundären) Vorlagendateien (und das ist nur für ein öffentlich verteiltes Design) verwendet wird, können für benutzerdefinierte Designs je nach aktuellem Kontext beliebig viele Vorlagendateien verwendet werden minimiert die "WordPress" -Methode der Auszeichnungstrennung die Menge des duplizierten Codes.

Angenommen, Sie möchten Ihren Doctype von "Übergang" in "Strict" ändern (oder Sie möchten zu HTML5 wechseln) oder Ihre Copyright-Erklärung in der Fußzeile Ihrer Website ändern. Mit der "WordPress" -Methode zum Trennen von Markups nehmen Sie diese Änderungen in der Datei one vor. Mit der zuletzt genannten Methode zur Trennung von Inhalten nehmen Sie diese Änderungen sieben bis sechzehn (oder mehr) Mal vor.

Bearbeiten

Ich nahm an, dass diese Frage auftauchen würde:

Ich möchte Ihre Meinung zur folgenden Situation hören. Nehmen wir an, wir müssen "og-Tags (Open Graph-Meta-Tags)" einfügen und sie haben ein anderes Format für "index", "single.php", "page", "archive" -Vorlagen. Wenn wir eine Struktur wie "original wp theme structure" haben, müssen wir bedingte Anweisungen (if..else) in der "header.php" -Datei verwenden, richtig? Und ich denke, jeder stimmt weniger "bedingten Aussagen" zu, bessere Leistung pro Anfrage, oder?

Wir haben mehrere Möglichkeiten:

  1. Verwenden Sie PHP Abfragebedingungen direkt in header.php
  2. Verwenden Sie PHP Abfragebedingungen in Rückrufen, die in wp_head (oder wp_enqueue_scripts usw.) eingebunden sind.
  3. Verwenden Sie get_header( $context ), wobei $context auf der Vorlagenhierarchie basiert und header-$context.php enthält, falls gefunden, oder header.php, falls nicht gefunden.

Die zahlreichen Optionen sprechen jedoch nicht wirklich die zugrunde liegende Frage in Bezug auf Leistungseinbußen an. Persönlich halte ich den Leistungseinbruch für vernachlässigbar, da alle Abfragebedingungen sowieso als Teil des Abfrageobjekt-Caches zwischengespeichert werden. Wenn Sie sie also anrufen, sollte dies keine bedeutenden Leistungseinbußen zur Folge haben.

7
Chip Bennett

Es gibt keinen Widerspruch, Sie können beide verwenden.

Beispiel

<!doctype html>
<html <?php language_attributes(); ?>>
  <head>
    <?php get_header(); ?>
  </head>
  <body>
    <?php get_template_part( 'content', get_post_format() ); ?>
    <?php get_footer(); ?>
  </body>
</html>

Der Vorteil des WordPress-Systems ist: Sie können Ihre Vorlagen nach Belieben strukturieren.

7
fuxia