Wordpress-Anpassungen für technikkultur-erfurt.de
Mit der Umstellung auf bytecluster0002 haben wir auf der Domain technikkultur-erfurt.de ein neues Wordpress aufgesetzt. Die alten Wordpress-Installationen werden als statischer Inhalt auf einer Archiv-URL abgelegt, damit sie auch ohne aktive Wordpress-Installation einsehbar sind. Die Serverkonfiguration ist in wordpress dokumentiert, nachfolgend werden nur die innerhalb von Wordpress erfolgten Anpassungen/Plugins etc. aufgeführt.
Wordpress User Enumeration
In WordPress gibt es mehrere Stellen, an denen der Benutzername eines Kontos ausgelesen werden kann. Möchte man dies verhindern, müssen in der functions.php mehrere Filter ergänzt werden. Eine Anleitung dazu findet man auf kultuberbanause.de.
Im aktiven Weblog sind die Änderungen noch nicht eingebaut.
wp-config.php
Cache aktivieren
Die nachfolgende Zeile muss vor require_once ABSPATH . 'wp-settings.php';
eingefügt werden.
define( 'WP_CACHE', true );
functions.php
erlaubte Dateitypen für Medien-Upload anpassen
WordPress erlaubt im Standard nur eine begrenzte Auswahl an Dateitypen, welche in die Mediathek hochgeladen werden dürfen (siehe https://codex.wordpress.org/Uploading_Files). Die Liste der erlaubten Dateitypen kann über die functions.php angepasst werden (Beispiel). Damit der nachfolgende Code Update-sicher bleibt, wird er als Snippet im Plugin „Code Snippets“ angelegt.
function dateitypen_bearbeiten($mime_types){ $mime_types['zip'] = 'application/zip'; //.zip hinzufügen // unset($mime_types['pdf']); //.pdf entfernen return $mime_types; } add_filter('upload_mimes', 'dateitypen_bearbeiten', 1, 1);
Template
User CSS
Verwendet wird aktuell das Template „Modern“ mit folgenden CSS-Anpassungen…
#stc-unsubscribe-checkbox,#stc-all-categories,#stc_categories {width:1em;} #stc-subscribe-btn,#stc-unsubscribe-btn {border: 2px solid #D8D8D8;color:#6A6C6E} .posts .entry {padding-left:1em;padding-right:1em} .sidebar .widget {padding: 1em;} .intro-title { font-size: 3rem; padding: 4% 0; } .sidebar .widget input, .footer-widgets .widget input, .sidebar .widget select, .footer-widgets .widget select, .sidebar .widget textarea, .footer-widgets .widget textarea { -width: 100%; } .entry-content-container, .comments-area-inner, .site-info-inner, .footer-widgets { padding-bottom: 2rem; } .attachment .entry-media, .entry-content-container, .comments-area-inner, .site-info-inner, .footer-widgets { padding-top: 2rem; } .posts .entry-media { margin-left: -1em; margin-right: -1em; margin-bottom: 2.6244em; }
Vorschaubilder
Damit die Vorschaubilder zum Template passen, müssen unter Einstellungen/Medien die Größen der Bilder angepasst werden, die im Standard recht klein und quadratisch sind. Die Anpassungen entspricht den empfohlenen Bildgrößen, welche ebenfalls auf der Seite aufgeführt sind.
- Vorschaubilder: 420 x 0
- Mittelgroß: 744 x 0
- Groß: 1200 x 0
verwendete Plugins
Plugin | Zweck |
---|---|
Advanced Custom Fields | Erlaubt die Definition zusätzlicher Felder, auch abhängig von einzelnen Beiträgen. Wird für das Template „Modern“ empfohlen. |
Antispam Bee | Anti-Spam-Plugin als Alternative zu Akismet |
Cache Enabler | Cache verwalten und bei Bedarf löschen |
Classic Editor | Implementierung des alten Editors ohne WYSIWYG. |
Code Snippets | erlaubt das einfügen von Codeblöcken in die functions.php ohne das man die Datei des Themes anpassen muss |
Contact Form 7 | Kontaktformular |
Contextual Related Posts | zeigt ähnliche Beiträge unter einem Artikel an |
Disable and Remove Google Fonts | Deaktiviert die Einbindung von Google Fonts in ein Theme ohne das am Code etwas angepasst werden muss. Funktion hängt vom Theme ab, mit „Modern“ scheint es zu passen. |
Email Subscribers & Newsletters | versendet E-Mail-Benachrichtigungen bei neuen Beiträgen an Abonennten, hat Double-Opt-In. Derzeit in der Seitenleiste, kann aber auch als eigene Seite genutzt werden. |
Enhanced Media Library | Zusätzliche Funktionen für die Media-Bibliothek (z. B. Alben) |
Enhanced Text Widget | Wird für den Raumstatus in der Seitenleiste benötigt, da Wordpress standardmäßig keinen PHP-Code ausführt. |
ICS Calendar | Stellt auf einer Seite einen Kalender mit Terminen dar. Schön an diesem Plugin ist die Möglichkeit, mehrere ICS in einem Kalender darstellen zu lassen. |
Limit Login Attempts Reloaded | Blockiert eine IP für x Minuten bei zu vielen falschen Logins. |
Regenerate Thumbnails | Erstellt neue Vorschaubilder, wenn man z. B. in den Media-Einstellungen die Auflösungen geändert hat. Kann normalerweise deaktiviert bleiben, wird nicht regelmäßig benötigt. |
Responsive Lightbox & Gallery | Lightbox für Bilder, damit diese in einem Hover aufgehen |
Simple Yearly Archive | Übersichtsseite aller veröffentlichten Beiträge |
Starbox | erzeugt einen Autoren-Block unter jedem Artikel |
Subscribe To Comments Reloaded | Besucher erhalten auf Wunsch eine E-Mail-Benachrichtigung bei neuen Kommentaren zu einem Artikel, Double-Opt-In ist aktiviert |
Two-Factor | 2-Faktor-Authentifizierung für Login |
WP Githuber MD | Umfangreicher MarkDown-Editor mit Syntax-Highlighting und HTML-Preview innerhalb des Editors |
WP Mail SMTP | Wordpress SMTP-Unterstützung |
XML Sitemap & Google News | erzeugt XML-Sitemaps für bessere/schnellere Indexierung durch Suchmaschinen |
Plugin-Konfiguration
ICS Calendar
Die meisten Funktionen bzw. die Ausgabe des Plugins lassen sich über Parameter im ShortCode der Seite steuern. Nachfolgend beispielhaft die Einbindung mit unseren beiden öffentlichen NextCloud-Kalendern von Bytespeicher und Makerspace.
[ics_calendar url="https://cloud.technikkultur-erfurt.de/remote.php/dav/public-calendars/62H5QIYTZJMRSB17?export https://cloud.technikkultur-erfurt.de/remote.php/dav/public-calendars/FW4LI1Y6AID0ZVC1?export" view="month" tz="Europe/Berlin" eventdesc="true" location="true" organizer="true" attach="true" title="false" pastdays="90" monthnav="both" color="#3399ff #ff6600" feedlabel="Bytespeicher|Makerspace" legendposition="below" legendstyle="inline"]
Wichtig: Falls der Kalender nicht dargestellt wird, muss die PHP-Konfiguration geprüft werden!
Why isn’t my calendar loading?
This may be due to your server’s configuration. This plugin requires either the PHP cURL extensions, or the allow_url_fopen PHP setting to be turned on. Check your PHP configuration or your server administrator if you think this may be the issue.
Two Factor
Damit sich bei aktivierter 2FA Apps über die XMLRPC-API einloggen können, muss folgender Code in die functions.php gefügt werden:
add_filter( 'two_factor_user_api_login_enable', function( $enable ) { // Allow API login when using an application password even with 2fa enabled. if ( did_action( 'application_password_did_authenticate' ) ) { return true; } return $enable; } );
Um das Theme nicht anpassen zu müssen, wird der Code als Snippet im Plugin „Code Snippets“ verwendet.
Kontaktformular
Das Kontaktformular wird von „Contact Form 7“ bereitgestellt. Die Einstellungen sind überwiegend auf Standard belassen, als Empfänger-E-Mail ist der Vereinsvorstand angegeben.
Vorlage für Formular
Das Kontaktformular entspricht im Wesentlichen der Standardeinstellung, es wurde jedoch ein Frage-Feld ergänzt, welches vor dem Absenden beantwortet werden muss, um den ein oder anderen Spam-Bot abzuhalten. Groß-/Kleinschreibung ist für die Antworten nicht relevant.
<label>Dein Name [text* your-name] </label> <label>Deine E-Mail-Adresse [email* your-email] </label> <label>Betreff [text* your-subject] </label> <label>Deine Nachricht (optional) [textarea your-message] </label> [quiz quiz-515 "In welcher Stadt befindet sich unser Verein?|xxx" "Wie heißt die Bundeshauptstadt von Deutschland?|Berlin" "Was fördert unser Verein?|xxx"] [submit "Senden"]
Honeypot gegen Spam
Sollte die Sicherheitsfrage zur Abwehr von Spammern nicht ausreichen, kann ggf. noch zusätzlich/alternativ das Plugin Contact Form 7 Honeypot getestet werden. Aktuell ist es nicht installiert.
Übersichtsseite aller Artikel
Das Archiv wird von „Simple Yearly Archive“ bereitgestellt. Die Einstellungen sind überwiegend auf Standard belassen, als Datumsformat ist „d.m.“ eingestellt.
Cache Enabler
- Zwischengespeicherte Seiten mit gzip vorkomprimieren. aktiviert
Alle anderen Einstellungen sind deaktiviert bzw. leer.
Subscribe to Comments Reloaded
- StCR Checkbox… Ja
- Sicher deinstallieren Ja
- Anfragen automatisch löschen 30 Tage
- Datumsformat d M Y
- StCR Position Nein
- Double Opt-In aktivieren Ja
- Autoren abonnieren Nein
- Aktiviere HTML E-Mails Nein
- Trackbacks senden Nein
- Verfolge alle Benachrichtigungen Nein
- Admin-Abonnement erlauben Nein
- BCC Admin bei Benachrichtigungen Nein
- „Font Awesome“ aktivieren Nein
- Nur für Blog-Beiträge aktivieren Ja
- Nur für angemeldete Benutzer aktivieren Nein
- Cookies aktivieren Ja
- Challenge-Frage aktivieren Nein
- Challenge-Frage egal
- Challenge-Frage egal
- Eindeutiger StCR Schlüssel automatisch erzeugt
XML-Sitemap
Die Sitemap wird vom Plugin „XML Sitemap & Google News“ erzeugt. In den Einstellungen unter „Post Types“ ist „Split by“ auf „keine“ eingestellt, Rest ist Standard.
In den Wordpress-Einstellungen für „Schreiben“ ist zu prüfen, dass die Ping-Services für Google und Bing/Yahoo aktiviert sind, damit beim Veröffentlichen von Beiträgen die geänderte Sitemap an die Suchmaschinen gemeldet wird für die Indexierung.
Raumstatus
Für die Darstellung des Raumstatus in der Seitenleiste wird das Plugin „Advanced Text Widget“ benötigt, da Wordpress standardmäßig keinen PHP-Code ausführt.
Der Code für den Status sieht wie folgt aus. Die Größe der Logos lässt sich durch Änderung der Variable $cssMaxWidth anpassen.
<?php // Spaces $spaces = [ 'Bytespeicher' => 'http://status.bytespeicher.org', 'Makerspace' => 'http://status.makerspace-erfurt.de', ]; // Max width of icon (small = 100, large = 200) $cssMaxWidth = 100; // JSON path for URI $statusJsonPath = '/status-minimal.json'; // Create stream context with low timeout $context = stream_context_create([ 'http' => [ 'method' => "GET", 'timeout' => 1 ] ]); // Check every space // No output on errors foreach ($spaces as $spaceName => $statusUrl) { // Get minimal status from spacestatus webpage $jsonContent = file_get_contents($statusUrl . $statusJsonPath, false, $context); if ($jsonContent === false) { // Status could not be received, skip it continue; } // Decode JSON with max depth of 2 $jsonContent = json_decode($jsonContent, false, 2); if (is_null($jsonContent) || !isset($jsonContent->open) || !isset($jsonContent->icon)) { // JSON could not be decoded or entries missing continue; } // Output spaces $text = 'Der ' . $spaceName . ' ist ' . ($jsonContent->open === true ? 'offen' : 'geschlossen') . '!'; echo '<a href=\'' . $statusUrl . '\'>'; echo '<img src=\'' . $jsonContent->icon . '\' title=\'' . $text . '\' alt=\'Raumstatus des ' . $spaceName . '\' style=\'width:100%;max-width:' . $cssMaxWidth . 'px;\' />'; echo '</a>'; } ?>
Jetpack (nicht mehr installiert)
Wir verwenden nur die kostenlose Variante von Jetpack, daher sind nicht alle Funktionen nutzbar.
Sicherheit
- Überwachung von Ausfallzeiten deaktiviert
- Anti-Spam aktiviert
- Schutz vor Brute-Force deaktiviert (vernünftiges Passwort und 2FA reichen)
- WordPress.com-Anmeldung deaktiviert
Performance
- Performance und Geschwindigkeit (alles deaktiviert da für Betrieb nicht zwingend nötig)
- Website-Beschleuniger deaktiviert
- Ladezeiten von Bildern verkürzen deaktiviert
- Ladezeiten von statischen Dateien verkürzen deaktiviert
Schreiben
- Mediathek
- Präsentiere Bilder in einer Vollbild-Karussell-Galerie deaktiviert
- Erstellen
- Aktiviere die Option zum Kopieren ganzer Beiträge… deaktiviert
- Schreibe Beiträge oder Seiten in Markdown-Syntax. deaktiviert
- Benutze die Markup-Sprache LaTeX deaktiviert
- Verwende Shortcodes, um Medien von beliebten Websites einzubetten deaktiviert
- Individuelle Inhaltstypen alles deaktiviert
- Theme-Erweiterungen
- Unendlich Scrollen Mehr Beiträge mit dem Standard-Theme-Verhalten laden
- CSS-Anpassungsbereich optimieren deaktiviert
- Widgets
- Stelle zusätzliche Widgets wie Abonnementformulare und Twitter-Streams auf deiner Website zur Verfügung deaktiviert
- Aktiviere Steuerelemente zur Sichtbarkeit von Widgets… deaktiviert
- Per E-Mail veröffentlichen deaktiviert
- WordPress.com-Werkzeugleiste deaktiviert
Teilen
- Publicize-Verbindungen deaktiviert (muss noch aktiviert und verknüpft werden)
- Teilen-Buttons deaktiviert (haben „richtige“ Betriebssysteme integriert)
- Gefällt mir-Buttons deaktiviert
Diskussion
- Kommentare alles deaktiviert
- Abonnements alles deaktiviert
Traffic
- Ähnliche Beiträge alles deaktiviert
- WP.me-Kurzlinks deaktiviert
- Sitemaps deaktiviert
- Website-Verifizierung deaktiviert
Module ohne eigene Konfigurationsseite
Mehrere Jetpack-Module können in der normalen Konfigurationsoberfläche nicht deaktiviert werden, sondern nur über die Modulübersicht zu finden. Der Direkt-Link lautet https://technikkultur-erfurt.de/wp-admin/admin.php?page=jetpack_modules.
- Benachrichtigungen deaktiviert
- Kontaktformular deaktiviert
- Statistiken deaktiviert
- erweiterte Verbreitung deaktiviert
- JSON-API deaktiviert