Als ich anfing, über Templating in WordPress nachzudenken, dachte ich über zwei Aspekte nach:
- Inhalte speziell für Mitglieder ,
- Inhalte, die sich in einen einzigen Beitrag aufteilen könnten.
Aber je mehr ich darüber nachdachte, desto mehr wurde mir klar, dass es im Laufe von ein paar Beiträgen erklärt werden könnte (und wohl auch sollte).
Also werde ich den aktuellen Stand der WordPress-Templates aufschlüsseln und dann praktische Möglichkeiten aufzeigen, wie wir beispielsweise unsere Plugins so organisieren können, dass wir Standard-PHP verwenden.
Danach werde ich in einer zukünftigen Serie untersuchen, was es bedeutet, andere Templating-Engines zu verwenden (bei unserer Arbeit sowohl PHP als auch JavaScript).
Für den Anfang möchte ich jedoch einen Blick darauf werfen, wie oft wir Vorlagen sehen, die im Kontext von WordPress-Themes und Plugins geschrieben wurden.
WordPress-Vorlagen für Anfänger
Abhängig von Ihrer Erfahrung mit WordPress und anderen PHP-basierten Systemen ist Ihre Definition von Templating anders als die von jemand anderem.
Um also zu versuchen, eine gemeinsame Definition zu erstellen, die ich in dieser Reihe von Beiträgen verwenden werde, wird aus dem WordPress-Codex verwendet:
Vorlagen sind die Dateien, die steuern, wie Ihre WordPress-Site im Web angezeigt wird.
Auf der Seite wird weiter darüber gesprochen, wie es in Verbindung mit der Datenbank und anderen Assets funktioniert, und ich empfehle, darüber zu lesen, wenn Sie damit nicht vertraut sind.
Die obige Definition funktioniert jedoch gut dafür, wie ich vorhabe, darüber nachzudenken.
1 Wie es ist (gerade jetzt)
Wenn es darum geht, über WordPress-Vorlagen nachzudenken, denke ich, dass es hilfreich ist, eine einzelne Vorlage mit einem Code zu betrachten, der ungefähr so aussieht:
<div id="content-container">
<p>
Oh! The garbage chute was a really wonderful idea. What an incredible smell you've discovered! Let's get out of here!
Get away from there... No! wait! Will you forget it? I already tried it. It's magnetically sealed! Put that
thing away! You're going to get us all killed.
</p>
<h2>List of Post Titles For Acme Post Type</h2>
<?php
$args = array(
'post_status' => 'publish',
'post_type' => 'acme',
'posts_per_page' => '10'
);
$custom_query = new WP_Query( $args );
if ($custom_query->have_posts()) {
echo '<ul>';
while ($custom_query->have_posts()) {
$custom_query->the_post();
echo '<li>'. get_the_title(). '</li>';
}
echo '</ul>';
wp_reset_postdata();
}
?>
<p>
Absolutely, Your Worship. Look, I had everything under control until you led us down here. You know, it's not
going to take them long to figure out what happened to us. It could be worst... It's worst.
There's something alive in here! That's your imagination. Something just moves past my leg!
Look! Did you see that? What? Help!
</p>
</div><!-- #content-container -->
Der Punkt des obigen Codes ist, dass Sie sehen, dass er PHP und HTML mischt.
Darüber hinaus ist es wichtig zu beachten, dass jede dieser Dateien mit CSS gestaltet ist und zusätzliches Verhalten aufweisen kann, das über JavaScript gesteuert wird. Zu diesem Zweck können Sie es wie folgt konzipieren:
Dies stellt eine einzelne Vorlage dar, die sowohl HTML als auch PHP in einer einzigen Vorlage mischt. Und diese Vorlage wird dann mit CSS gestaltet und mit JavaScript gesteuert.
All dies arbeitet zusammen, um das bereitzustellen, was der Benutzer sieht.
2 Erzeugt die Entwicklerorganisation Leistung?
Aber die Art und Weise, wie dies funktioniert, ist ziemlich chaotisch, und obwohl es für den Benutzer gut aussehen mag, wirft es einige Fragen auf:
- Ist es so performant wie es sein könnte?
- Wie einfach ist die Wartung für einen Entwickler?
- Was ist der Build-Prozess?
- Wie wird das Vermögen gepflegt und organisiert?
Sicher, das meiste, was Sie oben lesen, ist sehr entwicklerzentriert, aber ich finde, wenn ein Code so organisiert ist, dass es für Entwickler einfach ist, damit zu arbeiten, kann es für den Benutzer oft sogar noch einfacher sein.
Was bedeutet das aber?
- Stellen wir Sass vor?
- Minimieren wir JavaScript?
- Wie kombinieren wir diese Assets und importieren sie?
- Was ist mit den benutzerdefinierten PHP-Abfragen, die im Kontext jeder Vorlage erfolgen?
Und obwohl die ersten Dinge wichtig und lohnenswert sind (und ich werde sie vielleicht später in einer Serie behandeln), kann das Trennen der Logik von innerhalb einer Vorlage auch ohne eine Templating-Engine dazu beitragen, den Code entwicklerorientierter zu machen.
Macht es die Dinge für den Benutzer schneller? Nicht unbedingt. Aber es hilft uns, den ersten Schritt zu tun, um genau das zu tun.
Lassen Sie uns neu organisieren
Im nächsten Beitrag dieser Serie werde ich Inhalte, die wir in WordPress-Vorlagen zu sehen gewohnt sind, anhand eines Beispiels aufschlüsseln und damit beginnen, sie neu zu organisieren, damit sie besser organisiert sind und die Techniken in verschiedenen Projekten verwendet werden können.
Das bedeutet, Dinge in ihre Funktionen zu verschieben (oder sogar in ihre Klassen und damit ihre Funktionen) und wie wir sie aus dem Kontext unserer Vorlagen heraus aufrufen können.
Letztendlich wird dies zu Code führen, der einfacher zu lesen ist, Bedenken besser voneinander trennt und uns dazu bringt, die Art und Weise zu ändern, wie Daten in eine Vorlage eingefügt werden.