dienste:wp_tkev

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.

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.

  • Vorschaubilder: 420 x 0
  • Mittelgroß: 744 x 0
  • Groß: 1200 x 0
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.

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.

Das Archiv wird von „Simple Yearly Archive“ bereitgestellt. Die Einstellungen sind überwiegend auf Standard belassen, als Datumsformat ist „d.m.“ eingestellt.

  • Zwischengespeicherte Seiten mit gzip vorkomprimieren. aktiviert

Alle anderen Einstellungen sind deaktiviert bzw. leer.

  • 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

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.

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
  • dienste/wp_tkev.txt
  • Zuletzt geändert: 28.12.2021 21:24
  • von mape2k