Denken Sie im Voraus ĂŒber Skalierung nach, nutzen Sie Standard-Wordpress-Lösungen optimal, erstellen Sie ein WP-Thema mit Ihren eigenen HĂ€nden, kĂŒmmern Sie sich um die Bequemlichkeit eines Layout-Designers, konzentrieren Sie sich auf MobilitĂ€t - und aktualisieren Sie den Blog des Unternehmens, damit Leser, Redakteure und FĂŒhrungskrĂ€fte ihn lieben. Wir haben es geschafft.
Promopults Blog ist 9 Jahre alt. WĂ€hrend dieser Zeit durchlief er mehrere Transformationen. Sergey Glazov , der Technologe unseres Blogs und anderer wichtiger Dinge im Promopult-System, spricht ĂŒber Letzteres.
Dies wird nicht mehr diskutiert, da es zur Norm geworden ist: ein schneller und einfacher Standard fĂŒr das Blog eines Unternehmens, eine Person, ein persönliches, ja, was auch immer, WordPress. Sie können argumentieren, aber die Tatsache bleibt.
Ich möchte darĂŒber sprechen, was ich in Bezug auf die Organisation des Codes, die Arbeit mit dem WordPress-Blog und dessen UnterstĂŒtzung erreicht habe. Diese Geschichte handelt von dem Prozess, da der aktuelle Status der letzte Punkt in diesem Prozess ist und es den Anschein hat, dass der aktuelle Status im Vergleich zu allen frĂŒheren Iterationen in den AnsĂ€tzen zur Organisation am erfolgreichsten ist.
Was ist bei (meinem) Start passiert - im Jahr 2016
Es ist selten, wenn ein Entwickler alles von Grund auf neu erstellt und durchdacht. HĂ€ufiger stellt sich heraus, dass bereits ( oft sogar vor langer Zeit, mit einer separaten Historie ) ein Projekt unterstĂŒtzt werden muss. Neugestaltung, Ănderungen, groĂe TK und Anforderungen. Und unter den Bedingungen des Bestehenden ist es notwendig, irgendwie schnell zu navigieren und Probleme zu lösen.
Ich habe den Blog 2016 angenommen, als er bereits eine lange Geschichte hatte und nicht alles so schön ist, wie ich wollte.
- Altes Blog-Design mit einer neunjÀhrigen Geschichte.
- Das Fehlen einer Handy- / Tablet-Version in irgendeiner Form.
- Mehr als 600 BeitrÀge.
- Strukturelle Probleme mit Inhalten und ihrer Organisation: mehr als 20 Kategorien und mehr als neunhundert Tags (jetzt mehr, aber wir haben bereits aufgehört).
- Die PlĂ€ne haben bereits ein Rebranding und den Umzug in eine neue Domain. Dies gilt auch fĂŒr den Blog.
- Eine lange Kette von Aktionen bei der Arbeit mit Code.
- Arbeiten Sie ohne Versionskontrolle (.git).
Erste Aufgaben: Mobilisierung und Design
Die Hauptaufgabe bestand darin, das bestehende Thema des Blogs anpassungsfĂ€hig zu machen: Mobile Benutzer können BeitrĂ€ge lesen und die Website angemessen nutzen. Sie sprachen und schrieben immer mehr ĂŒber Mobile First , und Statistiken zeigten, dass sie das Blog von MobilgerĂ€ten aus lesen.
Parallel zu diesen Arbeiten wurde ein neues Design gezeichnet.
Als Entwickler habe ich mit dem Designer zusammengearbeitet, ohne eine unnötige Kette von Mediatoren in der Diskussion, sodass der Kommunikationsprozess schneller und lebendiger war. Die offensichtliche Tatsache natĂŒrlich, aber aus irgendeinem Grund wird sie in vielen Prozessen vernachlĂ€ssigt. Und es stellt sich heraus, dass der Designer etwas tut, das sehr von der RealitĂ€t getrennt ist. Sprechen Sie mit Ihrem Mund und besprechen Sie alle Punkte. Jeder Teilnehmer am Prozess ist daran interessiert, Gutes und Cooles zu tun. Aber nicht jeder versteht, dass der Prozess eine zusammenhĂ€ngende Kette ist. Wenn ein einzelner Darsteller an seinem Arbeitsplatz etwas verpasst oder nicht tut, wird es fĂŒr die Menschen im nĂ€chsten Prozess schwierig.
WÀhrend der Arbeit an der mobilen Version habe ich die Nachteile und SchwÀchen der Organisation des Entwicklungsprozesses gesehen. Ich wollte alles beschleunigen und vereinfachen.
Wie bei der Arbeit am Code im Blog
Es gab eine DEV-Version des Blogs mit einer separaten Testdatenbank. Die Arbeit mit Dateien fand auf einem Remote-Server statt, die Tests fanden an einer separaten Adresse statt, auf die in der AuĂenwelt nicht zugegriffen werden konnte. Nach der Arbeit, dem Testen und der Geburt einer bestimmten Bedeutungseinheit wurde sie durch einen Aufruf an den Administrator auf dem Battle-Blog veröffentlicht. Was er tat, war eine separate Magie.
FĂŒr einen Blog, in dem sich einmal im Jahr etwas Ă€ndert, ein groĂartiger Prozess. Aber mit der neuen Ausgabe und ihren BedĂŒrfnissen wĂ€re ein solcher Prozess ein groĂer Schmerz.
Was ich bekommen wollte, wie sie sagen, "in einer idealen Welt"
Der gesamte Code liegt in. Git- Repositories. Die Kampfversion des Blogs ist der master
dieses Repositorys. Alle Arbeiten mit dem Code erfolgen durch dev
an einen dev
oder andere Zweige, die mit einzelnen groĂen Aufgaben verbunden sind.
Nach Abschluss der Aufgabe wird eine Pull-Anforderung (PR) und / oder eine ZusammenfĂŒhrungsanforderung (MR) mit einer Reihe von Ănderungen erstellt. Die Bedeutung in MR und PR ist gleich, aber in verschiedenen Diensten - ein anderer Name. Wir haben GitLab , also Merge Request.
Beim Erstellen von MR wird eine temporĂ€re Adresse des Formulars-git-branch-test.dev.blog.promopult.ru verfĂŒgbar, auf die nur ĂŒber IP fĂŒr die Live-ĂberprĂŒfung in der Testumgebung -git--test.dev.blog.promopult.ru
werden kann.
Der Code im erstellten MR wird automatisch ĂŒberprĂŒft und ĂŒberprĂŒft (Code-Linter, bei dem ich die Syntax nach vordefinierten Regeln ĂŒberprĂŒfe) und im manuellen Modus (die vertikale Leistung im Team, der Timlid betrachtet ihn sorgfĂ€ltig mit seinem konvexen, aufmerksamen Auge). Nach bestandener ĂberprĂŒfung - ĂŒber die Browser-OberflĂ€che des .git-Repositorys wird die SchaltflĂ€che "ZusammenfĂŒhren" gedrĂŒckt und alle Ănderungen werden nach einer kurzen offensichtlichen Zeitspanne im Kampfblog angezeigt.
Neugestaltung, erster Ansatz
Arbeitsplan fĂŒr die Neugestaltung des Blogs:
- Layout eines statischen Prototyps fĂŒr die Designlayouts aller Seiten;
- Das Layout in ein WordPress-Theme verwandeln ("Stretching").
Layout - eine separate Arbeitsstufe. FĂŒr die bequeme Arbeit mit Stilen (CSS), Markup und JS verwendete das Projekt eine Reihe von Plugins und Modulen, die ĂŒber die im Builder SPT (Start Project Template) beschriebenen Gulp-Aufgaben zusammengestellt werden.
Die SchlĂŒsselwörter, die im Sammler eines statischen Blog-Themas verwendet werden, sind: HTML, CSS, JS, Babel, Gulp, PostCSS, SCSS, Nunjucks.
Nach Abschluss des Layouts war die Struktur wie folgt (es werden nur Verzeichnisse der ersten Ebene angezeigt ):
âââ Design # Design, Layouts und alles
âââ app / # Projektquellen: separate Module
âââ dist / # Die zusammengestellte Version des Projekts (HTML-Dateien) und die gesamte Statik
âââ gulpfile.js / # Config Gulp.js
âââ package.json # Collector-Konfigurationsdatei: Pakete, Skripte
Jedes einzelne visuelle semantische Element auf der Seite, beispielsweise eine Postkarte ( /components/article_card/
), war ein Ordner, in dem es sich befand:
- Markup-Datei ( article_card.html
),
- article_card.scss
( article_card.scss
),
- JS-Datei ( article_card.js
).
Und jede Seite wurde aus solchen separaten Komponentenblöcken zusammengesetzt. Blöcke sind bequem zu bearbeiten, und Ănderungen wirken sich nicht auf benachbarte Elemente aus.
Bei der Ausgabe erstellte der Collector den Ordner dist
, der vorgefertigte HTML-Dateien mit Seiten zur visuellen Anzeige im Browser wÀhrend der Bearbeitung und Koordination sowie eine Stildatei, alle Themen und zwei JS-Dateien app.js
: Eine Datei ( app.js
) beschrieb die Logik und das Verhalten Die zweite vendor.js
( vendor.js
) enthielt alle fĂŒr die Site verwendeten Bibliotheken (jQuery, fotorama, Magnific-Popup und andere).
Als nĂ€chstes mĂŒssen Sie all dies in ein WordPress-Thema verwandeln und ĂŒber die Dateistruktur nachdenken. Damit Sie bequem mit einem statischen Layout arbeiten und daneben ein WP-Thema legen können.
Liste der vom Designer erstellten Layouts. Sie sind die gleichen wie die WordPress-Blog-Themendateien:
- Homepage (
home.php
Datei). single.php
Post / Post-Seite ( single.php
).- Ansicht einer einzelnen Textseite (
page.php
). - Die Newsletter-Abonnementseite (
subscribe.php
). - Fehler 404 (
404.php
). - Separate Tag-Seite (
tag.php
). - Separate Kategorieseite (
category.php
). - Suche und Suchergebnisse (
search.php
).
Ein Workflow mit diesem Ansatz und der Trennung der statischen Version und der WordPress-Version des Themas lautet wie folgt: Wenn Sie etwas im visuellen Teil korrigieren mĂŒssen, werden die Ănderungen in der statischen Version vorgenommen und nach dem Test auf das Thema ĂŒbertragen. Wenn in einem nicht visuellen Teil Ănderungen erforderlich sind, werden nur WP-Themendateien geĂ€ndert.
Der Blog- bsp
ist bsp
. Es befindet sich entlang des Pfads im Ordner mit den Themen des Blogs selbst:
âââ wp-content / # Benutzerdefinierte WordPress-Site-Dateien
â â Themen / # Site-Themen
/ â â App / # Quellen eines statischen Themas
Ul â â â gulpfile.js / # Gulp-Aufgaben fĂŒr die Montage
â â â dist / # Erstellen Sie ein statisches Thema
/ â â â Assets / # Ressourcen: JS, CSS und Grafiken
â â â bsp / # WP-PromoPult-Blog-Thema
Assets â â â Assets / # Ressourcen: JS, CSS und Grafiken, Kopieren von `/ dist /`
â â â â home.php # Die Hauptseite des Blogs und andere Dateien im Stammverzeichnis des Themas
Der Ort des WordPress-Themas ist offensichtlich und durch die Dateistruktur von WordPress selbst vorgegeben.
Es gibt keine anderen Themen im Themenverzeichnis - alles, was Standard ist, wurde gelöscht. Es gibt einen Mythos ĂŒber die Steigerung der ProduktivitĂ€t auf diese Weise, aber wir haben dies nicht bemerkt. Dies geschieht mehr fĂŒr die Bestellung im Code. Sie mĂŒssen nicht speichern, was nicht verwendet wird und wird definitiv nicht verwendet.
Ebenfalls in .git sind alle verwendeten WP-Plugins enthalten. Auf unserer Website sind dies Google XML-Sitemaps, RSS fĂŒr Yandex Turbo, RusToLat und WP-PostViews.
Der statische, kompilierte Prototyp der Blogseiten und Quelldateien wurde in das Blog-Themenverzeichnis verschoben, um bequem mit dem logischen Teil der Vorlage und mit allem zu interagieren, was fĂŒr das Erscheinungsbild und Verhalten der Elemente auf der Seite verantwortlich ist.
Eine statische Version der Projektassembly - mit der Quelle und allen AbhÀngigkeiten beim ersten Versuch, die Struktur zu organisieren - wurde im Themenverzeichnis abgelegt.
Das heiĂt, neben dem Haupt- bsp
Thema wurde das Verzeichnis /app
hinzugefĂŒgt, in dem sich der Quellcode fĂŒr das Themenlayout und den Gulp-Collector befinden. In dieser Version gab es jedoch einen schwierigen Moment: Statische Dateien wurden in einem separaten Verzeichnis generiert, und damit die Ănderungen im WP-Theme vorgenommen werden konnten, mussten die statischen Stildateien und Skripte in den assets
Ordner innerhalb des Themas kopiert werden.
Zweiter Ansatz: eine neue Version der Struktur
In den ersten Wochen wurde dies durch ein einfaches Konsolenskript entschieden, das die gesammelten Dateien von einem statischen Thema in ein WP-Thema kopierte. ĂbermĂ€Ăiges Handeln fĂŒhrt zu Fehlern. Daher bestand die Möglichkeit nur darin, die Struktur zu korrigieren.
Wir haben drei wichtige Verzeichnisse (von der Wurzel):
- WP-Thema:
/wp-content/themes/bsp
- Quellen eines statischen Themas:
/app
- Gesammeltes statisches Thema:
/dist
Und darin befinden sich assets
mit Stildateien, Grafiken und JS
Sie mĂŒssen alles so anordnen, dass die Dateien mit statischen Stilen und Skripten im gewĂŒnschten Ordner ( /wp-content/themes/bsp/assets
) /wp-content/themes/bsp/assets
.
Die neue Version der Struktur war wie folgt:
âââ gulpfile.js / # Gulp-Aufgaben fĂŒr die Montage
âââ wp-content / # Benutzerdefinierte WordPress-Site-Dateien
â â Plugins / # WP-Plugins
â â Themen / # Site-Themen
Sp â â bsp / # PromoPult-Blog-Thema
/ â â â app / # Quellen eines statischen Themas
Assets â â â Assets / # Ressourcen: JS, CSS und Grafiken (automatische Generierung)
â â â â home.php # Die Hauptseite des Blogs und andere Dateien im Stammverzeichnis des Themas
âââ wp-admin / # WP-Dateien fĂŒr das Admin-Panel
âââ wp-enthĂ€lt / # WP-Dateien des Systems
Die Wurzel des gesamten Projekts sind Schluckaufgaben - und werden von der Wurzel aus ausgefĂŒhrt. Die Konfiguration von gulp-task beschreibt die Struktur, in der statische Dateien aus dem Verzeichnis wp-content/themes/bsp/assets
wp-content/themes/bsp/app
in wp-content/themes/bsp/assets
ohne zusÀtzliche Aktionen wie Kopieren usw. wp-content/themes/bsp/assets
werden.
WP-Themendateien bleiben unverĂ€ndert und die Arbeit wird gemÀà dem alten Szenario fortgesetzt: Ănderungen in der Statik â Ăbertragung in WP-Dateien. CSS- und JS-Statiken werden sofort im Themenordner generiert und alles funktioniert einfach.
Bei all dem ging es um den Arbeitsprozess. Nun dazu, wie der Blog aufgebaut ist.
PromoPult Blog: Wie es funktioniert
Die Hauptmacht des Blogs ist das Team. Herausgeber, Autoren, Layouter.
Die groĂe Aufgabe besteht darin, die Arbeit mit Blog-Inhalten im Admin-Bereich bequemer zu gestalten. Unter BerĂŒcksichtigung der Tatsache, dass das Thema unseres Blogs speziell fĂŒr Inhaltsaufgaben und redaktionelle Anfragen erstellt wurde, wurde das Admin-Panel entsprechend geĂ€ndert.
Checkliste vor Veröffentlichung
Jede Arbeit ist wichtig zu kontrollieren. Das Layout des Artikels ist ein standardisierter, formalisierter Prozess, der einfach in Form einer Checkliste dargestellt werden kann.
Die Jungs haben die Idee von EmailSoldiers gesehen . Wir haben beschlossen, es zu Hause anzuwenden.
Wenn ein Element nicht aktiviert ist, werden Sie vom System vor der Veröffentlichung gewarnt.
Durch Klicken auf die Links, unterstrichene Links im Listenelement - markieren Sie ein bestimmtes Element.
Die Checkliste wird in derselben Reihenfolge wie die zusÀtzlichen Post-Einstellungen im Admin-Bereich erstellt.
Blogpost-Einstellungen
Eng verwoben mit der oben beschriebenen Publikations-Checkliste.
Bei der Entwicklung des Themas habe ich versucht, keine Plugins zu verwenden, sondern eine einfache Lösung fĂŒr die Aufgaben des Themas zu finden. Highlights:
- Beschreibungen fĂŒr SEO-Meta-Tags.
- Beschreibungen fĂŒr OpenGraph-Tags, die soziale Netzwerke verwenden, um Material auszutauschen und schöne Artikelkarten zu bilden.
- Bequeme Arbeit mit Titelbildern fĂŒr BeitrĂ€ge. Ein Bild ist erforderlich - es wird der Postkarte in der Publikationskachel hinzugefĂŒgt, die auf der Hauptseite und auf der Ăberschriften- oder Tag-Seite angezeigt wird.
- ZusĂ€tzliche Themeneinstellungen: Ein Beitrag kann mit oder ohne Cover sein, es gibt einen kurzen AnkĂŒndigungstext, den wir in der Kopfzeile mit einem Cover anzeigen, und er wird auch in der Beschreibung des Artikels in der Digest-Mailingliste verwendet.
Der Abschnitt mit den Post-Einstellungen wird ĂŒber Meta-Boxen und benutzerdefinierte Felder in WordPress implementiert.
Ăber das Meta-Feld wurde auch die Publikations-Checkliste hinzugefĂŒgt.
In Vorlagen ist das Arbeiten mit Feldern einfach: Wenn das Feld nicht leer und gefĂŒllt ist, erhalten wir den Wert und zeigen ihn an. So wird beispielsweise die Blockreaktion auf den Beitrag angezeigt:
<?php if (get_post_meta($post->ID, 'postreaction', true)) { ?> <div class="article_reaction"> <div class="label-reaction"><span><?php echo get_post_meta($post->ID, 'postreaction', true); ?></span></div> </div><!-- /.article_reaction --> <?php } ?>
Ein Beispiel fĂŒr eine Reaktionsausgabe auf einer Postkarte:
Schöne kleine Dinge
Es gibt einige nette kleine Dinge, die vielleicht niemand sieht. Aber wenn jemand es bemerkt hat - gut.
Zum Beispiel die Veröffentlichungsdaten eines Beitrags in Karten und in einem separaten Beitrag in unserem kyrillischen Alphabet und wissen, wie man sich verbeugt. Aus irgendeinem Grund ist dies nicht in der WordPress-Box. Wenn das Veröffentlichungsdatum im aktuellen Jahr liegt, wird das Jahr bei uns nicht angezeigt. Wenn das Jahr vom aktuellen Jahr abweicht, wird das Datum zusammen mit dem Veröffentlichungsjahr angezeigt.
KommentarzĂ€hler posten. Sie argumentierten lange Zeit, dass "0 Kommentare" oder "keine Kommentare" sehr verwirrend sind. Die Lösung ist sehr einfach: Zeigen Sie den KommentarzĂ€hler ĂŒberhaupt nicht an, wenn weniger als ein Kommentar vorhanden ist.
Im Allgemeinen arbeiten wir separat an einem Kommentarsystem und möchten darĂŒber in einem separaten groĂen Beitrag sprechen. Wir erstellen ein einfaches und bequemes Kommentarsystem mit einfacher Autorisierung ĂŒber soziale Netzwerke.
Eigene Likes: Das Kommentieren oder Teilen von Links in sozialen Netzwerken hĂ€ngt von der Geschwindigkeit des Inhaltsverbrauchs ab. Klicken Sie jedoch auf â GefĂ€llt mirâ und machen Sie deutlich, dass der Artikel cool ist - einfach und schnell. Wir machten unsere einfachen Likes und legten den ZĂ€hler auf die Postkarte. Und die Likes kommen ziemlich schnell an. Und da sie sich am Ende des Artikels befinden, ist dies auch ein Signal dafĂŒr, dass der Text gelesen wurde.
Sie haben ein dunkles Thema fĂŒr ihren Blog erstellt - jetzt ist es in Mode. Unter BerĂŒcksichtigung des modularen Aufbaus (tatsĂ€chlich besteht die Site aus einer Reihe von Blöcken, die irgendwie untereinander kombiniert sind) und der Organisation der Stile stellte sich heraus, dass dies ziemlich schnell erledigt wurde.
Ăber eine interessante technische
Markup- Code , CSS und JS werden im Thema minimiert . CSS und JS werden durch Gulp-Tasks im Statics Collector komprimiert, die Minimierung des WP_HTML_Compression
erfolgt jedoch ĂŒber den WordPress-Hook WP_HTML_Compression
.
Und in den Kommentaren im Markup haben wir einen Werbecode fĂŒr diejenigen hinzugefĂŒgt, die daran interessiert sind, wie die Site von innen angeordnet ist, und die sich zunĂ€chst den Quellcode ansehen:
CSS- und JS-Caching. Um Stile und Skriptdateien zwischenzuspeichern, aber immer relevant zu sein, verwenden wir filemtime (), wenn wir etwas ĂŒberarbeitet haben. Viele verwenden in diesem Fall ?<?php echo time(); ?>
?<?php echo time(); ?>
. Diese Option lÀdt jedoch die Datei herunter und stellt bei jedem Aufruf eine Anfrage.
Besser einen solchen Trick anwenden:
<link rel="stylesheet" type="text/css" href="<?php echo get_template_directory_uri(); ?>/assets/styles/style.css?t=<?php echo filemtime(get_theme_file_path().'/assets/styles/style.css'); ?>" />
In diesem Fall werden die Dateien heruntergeladen, wenn sie geĂ€ndert wurden, und das Datum, an dem die Datei geĂ€ndert wurde, wird dem Anforderungsparameter hinzugefĂŒgt.
Welche Plugins verwenden wir?
Trotz der Möglichkeit und des Wunsches, in einigen FÀllen mit Ihrer Entscheidung auszukommen, verwenden wir weiterhin Plugins. Unsere Liste lautet wie folgt:
Schlussfolgerungstipps fĂŒr diejenigen, die am Blog eines Unternehmens arbeiten
- Ich rate Ihnen zu Beginn der Projektarbeit, sofort ĂŒber eine Skalierung nachzudenken.
- Verwenden Sie bei Ihrer Arbeit
.git
. FĂŒr 2019 natĂŒrlich seltsame RatschlĂ€ge, aber dieser Rat kann jemanden vor grauen Haaren bewahren und zurechtweisen, wenn etwas schief geht. - Es ist besser, die Entwicklung und Arbeit an einem WordPress-Thema in zwei Phasen zu unterteilen: erstens etwas Statisches erstellen und bereits etwas wie ein WordPress-Thema âziehenâ.
- Wenn es eine Gelegenheit gibt - Zeit, Team und VerstĂ€ndnis dafĂŒr, warum Sie all dies brauchen - tun Sie es selbst, ohne vorgefertigte Optionen zu verwenden. Gewinnen Sie in Ordnung und verstehen Sie, wie alles funktioniert. Sie werden keine KrĂŒcken produzieren.
- Verwenden Sie Standard-WordPress-Hooks und -Funktionen, wenn Ihr Blog darauf basiert. Das Anpassen und Erstellen einer bequemen Lösung ist schnell und einfach.
- Machen Sie es dem Benutzer und den Redakteuren bequem.
- Vergessen Sie nicht die sozialen Netzwerke und das Mikro-Layout.
- Vergessen Sie nicht die mobilen Versionen.
- Vergessen Sie nicht die regelmĂ€Ăigen Updates von Plugins und Systemen.
- WÀhlen Sie nur bewÀhrte Plugins aus.
Die Arbeit am Blog geht weiter - bleiben Sie bei uns.