====== Wordpress-Anpassungen für technikkultur-erfurt.de ======
Mit der Umstellung auf [[dienste:bytecluster0002]] haben wir auf der Domain [[https://technikkultur-erfurt.de|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 [[dienste:bytecluster0002: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 [[https://blog.kulturbanause.de/2018/03/wordpress-user-enumeration-verhindern/|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 ([[https://wp-guru.net/erlaubte-dateitypen-fuer-den-upload-in-die-mediengallerie-hinzufuegen/|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 ^
| [[https://de.wordpress.org/plugins/advanced-custom-fields/|Advanced Custom Fields]] | Erlaubt die Definition zusätzlicher Felder, auch abhängig von einzelnen Beiträgen. Wird für das Template "Modern" empfohlen. |
| [[https://de.wordpress.org/plugins/antispam-bee/|Antispam Bee]] | Anti-Spam-Plugin als Alternative zu Akismet |
| [[https://de.wordpress.org/plugins/cache-enabler/|Cache Enabler]] | Cache verwalten und bei Bedarf löschen |
| [[https://de.wordpress.org/plugins/classic-editor/|Classic Editor]] | Implementierung des alten Editors ohne WYSIWYG. |
| [[https://de.wordpress.org/plugins/code-snippets/|Code Snippets]] | erlaubt das einfügen von Codeblöcken in die functions.php ohne das man die Datei des Themes anpassen muss |
| [[https://de.wordpress.org/plugins/contact-form-7/|Contact Form 7]] | Kontaktformular |
| [[https://de.wordpress.org/plugins/contextual-related-posts/|Contextual Related Posts]] | zeigt ähnliche Beiträge unter einem Artikel an |
| [[https://de.wordpress.org/plugins/disable-remove-google-fonts/|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. |
| [[https://de.wordpress.org/plugins/email-subscribers/|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. |
| [[https://de.wordpress.org/plugins/enhanced-media-library/|Enhanced Media Library]] | Zusätzliche Funktionen für die Media-Bibliothek (z. B. Alben) |
| [[https://de.wordpress.org/plugins/enhanced-text-widget/|Enhanced Text Widget]] | Wird für den Raumstatus in der Seitenleiste benötigt, da Wordpress standardmäßig keinen PHP-Code ausführt. |
| [[https://de.wordpress.org/plugins/ics-calendar/|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. |
| [[https://de.wordpress.org/plugins/limit-login-attempts-reloaded/|Limit Login Attempts Reloaded]] | Blockiert eine IP für x Minuten bei zu vielen falschen Logins. |
| [[https://de.wordpress.org/plugins/regenerate-thumbnails/|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. |
| [[https://de.wordpress.org/plugins/responsive-lightbox/|Responsive Lightbox & Gallery]] | Lightbox für Bilder, damit diese in einem Hover aufgehen |
| [[https://de.wordpress.org/plugins/simple-yearly-archive/|Simple Yearly Archive]] | Übersichtsseite aller veröffentlichten Beiträge |
| [[https://de.wordpress.org/plugins/starbox/|Starbox]] | erzeugt einen Autoren-Block unter jedem Artikel |
| [[https://de.wordpress.org/plugins/subscribe-to-comments-reloaded/|Subscribe To Comments Reloaded]] | Besucher erhalten auf Wunsch eine E-Mail-Benachrichtigung bei neuen Kommentaren zu einem Artikel, Double-Opt-In ist aktiviert |
| [[https://de.wordpress.org/plugins/two-factor/|Two-Factor]] | 2-Faktor-Authentifizierung für Login |
| [[https://de.wordpress.org/plugins/wp-githuber-md/|WP Githuber MD]] | Umfangreicher MarkDown-Editor mit Syntax-Highlighting und HTML-Preview innerhalb des Editors |
| [[https://de.wordpress.org/plugins/wp-mail-smtp/|WP Mail SMTP]] | Wordpress SMTP-Unterstützung |
| [[https://de.wordpress.org/plugins/xml-sitemap-feed/|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.
[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 [[https://de.wordpress.org/plugins/contact-form-7-honeypot/|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.
'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 '';
echo 'icon . '\' title=\'' . $text . '\' alt=\'Raumstatus des ' . $spaceName . '\' style=\'width:100%;max-width:' . $cssMaxWidth . 'px;\' />';
echo '';
}
?>
==== 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**