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.
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.
Die nachfolgende Zeile muss vor require_once ABSPATH . 'wp-settings.php';
eingefügt werden.
define( 'WP_CACHE', true );
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);
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; }
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.
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 |
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.
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.
Das Kontaktformular wird von „Contact Form 7“ bereitgestellt. Die Einstellungen sind überwiegend auf Standard belassen, als Empfänger-E-Mail ist der Vereinsvorstand angegeben.
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"]
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.
Das Archiv wird von „Simple Yearly Archive“ bereitgestellt. Die Einstellungen sind überwiegend auf Standard belassen, als Datumsformat ist „d.m.“ eingestellt.
Alle anderen Einstellungen sind deaktiviert bzw. leer.
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.
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>'; } ?>
Wir verwenden nur die kostenlose Variante von Jetpack, daher sind nicht alle Funktionen nutzbar.
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.