====== Wordpress ======
===== Posts und Pages zusammen in Sidebar anzeigen =====
Die einfachste Möglichkeit Pages und Posts in der Sidebar gemischt anzuzeigen, ist die Verwendung des "Individuelles Menü"-Widgets.
Dazu muss man ein benutzerdefiniertes Menü anlegen. Dort können Posts und Pages beliebig angeordnet werden. Dieses Menü wird dann im "Individuelles Menü"-Widget angegeben.
===== Link zur Startseite in benutzerdefiniertem Menü =====
Einen Link zur Startseite zu einem benutzerdefinierten Menü hinzuzufügen kann man unter Seiten->Zeige alle->Startseite.
Unter dem Tab "Zuletzt Erstellt" erscheint die Startseite nicht.
===== /category aus Link zu Kategorien entfernen =====
Standardmäßig verwendet Wordpress in den Links zu den Kategoriearchiven "/category/" bzw. die eingestellte Kategoriebasis. Um diesen Teil zu entfernen hat es bis Version 3.4 ausgereicht "./" als Kategoriebasis einzutragen. Mit dem Plugin [[http://wordpress.org/extend/plugins/no-category-base-wpml/|WP No Category Base]] ab Version 1.1.0 kann der gleiche Effekt erzielt werden. Das Plugin No Category Parents mit diesem [[http://wordpress.org/support/topic/plugin-no-category-parents-for-fix-no-post-on-category-d-work-on-34|Patch für Wordpress 3.4]] entfernt "category" zwar aus den Links zu den Seiten (vorher: "category/my-category/my-page", nachher: "my-category/my-page"), aber nicht aus den Links zu den Kategoriearchiven (vorher und nachher: "category/my-category/").
===== Child-Themes =====
Falls ein Theme nicht genug Möglichkeiten zur benutzerspezifischen Anpassung bietet, sollte nicht die Dateien des Themes selbst verändert werden, sondern ein [[http://www.elmastudio.de/wordpress/wordpress-theme-anpassungen-mit-hilfe-von-child-themes/|Child-Theme angelegt]] werden und die Anpassung dort vorgenommen werden.
Auf diese Weise gehen die Anpassungen bei einem Themen-Update nicht verloren.
Das Anlegen eines Vorschaubilds wird [[https://wordpress.stackexchange.com/questions/94131/how-to-set-thumbnail-image-for-a-child-theme|hier]] beschrieben.
===== Persistent Object Cache Empfehlung ausblenden =====
Um die Empfehlung einen persistenten Objectcache zu benutzen auszublenden (z.B. weil dies nicht erforderlich oder möglich ist) kann in der ''functions.php'' im Child-Theme die folgende Zeile hinzugefügt werden:
add_filter( 'site_status_should_suggest_persistent_object_cache', '__return_false' );
===== Sidebar auch für single-Posts und Seiten (Pages) anzeigen =====
Die empfohlene Vorgehensweise für das twentyeleven Theme ist [[http://web.archive.org/web/20130323012726/http://futurewebblog.com/add-sidebar-support-posts-twenty-eleven-theme/|hier]] beschrieben:
Damit das auch für Seiten funktioniert, muss man im Child-Theme noch eine Datei page.php mit folgendem Inhalt anlegen:
===== Übersetzung im Child-Theme anpassen=====
Übersetzungen sollten im Childtheme angepasst werden, damit sie bei einem Update des Themes oder des Wordpress-Cores nicht überschrieben werden.
==== Übersetzungen aus dem Theme ====
In der functions.php des Child-Themes kann mit
load_child_theme_textdomain( 'twentyeleven', get_stylesheet_directory() . 'languages' );
die Sprachdatei geladen werden. Die Sprachdatei mit dem Namen "de_DE.mo" wird im Pfad wp-content/themes/twentyeleven-child/languages erwartet. Dabei werden die Übersetzungen aus dem Theme aus wp-content/themes/twentyeleven/languages/twentyeleven-de_DE.mo (Themenamen-Präfix beachten) überschrieben.
==== Übersetzungen aus dem Wordpress-Core ====
Eine Möglichkeit zur Anpassungen von Übersetzungen aus dem Core ist hier beschrieben: [[http://blog.ftwr.co.uk/archives/2010/01/02/mangling-strings-for-fun-and-profit/]] Die Funktion filter_gettext sollte statisch sein um PHP-Strict-Warnings zu vermeiden:
static function filter_gettext($translation, $text, $domain)
===== Favicon im Child-Theme =====
In der Standardinstallation gibt Wordpress eine Datei mit 0 Byte Größe als favicon.ico aus. Um ein eigenes zu verwenden, folgendes in die Datei function.php des Child-Themes eintragen und das Favicon in das Rootverzeichnis des Blogs ablegen:
// add favicon
function blog_favicon() {
echo '';
}
add_action('wp_head', 'blog_favicon');
In neueren Wordpress-Versionen kann das Favicon auch über den Customizer oder den Site Editor (seit Wordpress 5.8) gesetzt werden, wenn dies vom Template unterstützt wird, siehe [[https://de.siteground.com/kb/wordpress-favicon/#using-the-site-editor|hier]].
Dies funktioniert auch im Child-Theme.
===== Umleitung von index.html =====
Zugriffe auf die index.html werden nicht umgeleitet, der einfache Versuch
redirect 301 /index.html http://www.domain.com/
führt zu einer Endlosschleife. Damit es klappt, muss DirectoryIndex gesetzt werden:
DirectoryIndex index.php index.html
redirect 301 /index.html http://www.domain.com/index.php
===== Bilder aus Gallery ausschließen =====
Mit dem Shortcode [gallery] werden alle Bilder, die dem aktuellen Artikel zuordnet sind, als Gallerie dargestellt. Möchte man einzelne Bilder nicht als Gallerie anzeigen (z.B. weil man sie schon an anderer Stelle in den Artikel eingebunden hat), kann man sie mit "exclude" und der entsprechenden ID ausgeschließen.
Beispiel:
[gallery exclude="136"]
===== Login-Fehlermeldung ändern =====
Aus den Fehlermeldungen, die Wordpress bei fehlerhaften Logins ausgibt, kann ein möglicher Angreifer schließen, ob Passwort oder Benutzeranme falsch waren. Um das zu ändern, muss in der functions.php des Child-Themes folgendes eingetragen werden:
//don't show if username or password was wrong
function my_login_error_message() {
return "FEHLER: Deine Login-Daten sind fehlerhaft.";
}
add_filter('login_errors', 'my_login_error_message');
===== Umstellung auf HTTPS =====
* Backup der Dateien und der Datenbank machen
* Auslieferung über HTTPS aktivieren/SSL Zertifikat installieren
* In ''wp-config.php'' eintragen: define('FORCE_SSL_ADMIN', true);
* Seitenadresse in den Wordpress-Einstellungen unter ''Einstellungen -> Allgemein'' auf HTTPS umstellen
* Alle Links im Inhalt und in den Templates umstellen. Dabei hilft das [[https://interconnectit.com/products/search-and-replace-for-wordpress-databases/|Search and Replace Script]] (läuft unabhängig von Wordpress) oder [[https://de.wordpress.org/plugins/better-search-replace/|Better Search Replace]] als Wordpress-Plugin. Wordpress selbst bietet mittlerweile auch [[https://all-inkl.com/wichtig/anleitungen/skripte/blogs/wordpress/ssl-in-wordpress-aktivieren_507.html|eine eigene Funktion]] dafür an.
* Sitemapadresse in der ''robots.txt'' auf HTTPS umstellen
* Google Webmastertools auf HTTPS umstellen
* Werden [[https://swwiki.e-dschungel.de/apache#unterschiedliche_inhalte_verschluesseltunverschluesselt|unterschiedliche Inhalt ausgeliefert, je nach dem ob verschlüsselt oder unverschlüsselt übertragen wird]] (z.B. für ''robots.txt''), sollte das überprüft werden
* Nach Mixed-Content-Warnungen suchen, dabei hilt [[https://www.jitbit.com/sslcheck/|SSLCheck]]
* Umleitung von HTTP nach HTTPS einrichten
* SSL-Einstellungen überprüfen, dabei hilft [[https://www.ssllabs.com/ssltest/|SSLLabs]]
===== Debugging =====
Um Fehler und Warnungen zum Debugging einzuschalten muss in der Datei ''wp-config.php'' folgendes eingetragen werden:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
Die Logs werden kann nach ''wp-content/debug.log'' geschrieben und zusätzlich dem Benutzer angezeigt.
Soll keine Anzeige für den Nutzer erfolgen muss außerdem noch
define( 'WP_DEBUG_DISPLAY', false );
hinzugefügt werden.
===== Slugs mit gleichem Namen wie existierendes Unterverzeichnis =====
Um den Wordpress-Permalink bzw. Slug ''testdir'' und die Unterseite ''testdir/subdir'' als Wordpress-Seite verwenden zu können, obwohl ''testdir'' und ''testdir/subdir'' physikalisch als Verzeichnisse existieren, muss eine zusätzliche Regel in die ''.htaccess'' vor ''BEGIN Wordpress'' eingetragen werden:
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} /testdir/$ [OR]
RewriteCond %{REQUEST_FILENAME} /testdir/subdir/$
RewriteRule . /index.php
===== Default-Werte für Plugin Contact Form 7 =====
Default-Werte für Forumlare mit dem Plugin Contact Form 7 können auch über Get-Variablen festgelegt werden.
[text* your-name default:get]
Auch Post-Variablen sind möglich, für Details siehe https://contactform7.com/getting-default-values-from-the-context/
===== Nützliche Plugins =====
* [[https://wordpress.org/plugins/tinymce-advanced/|Tiny MCE Advanced]] ein erweiterter EditorWird scheinbar nicht mehr gepflegt.
* [[https://wordpress.org/plugins/google-sitemap-generator/|Google XML Sitemaps]] zur Generierung von Sitemaps für Suchmaschinen
* Statt des bisher empfohlenen Plugins[[https://de.wordpress.org/plugins/companion-auto-update/|Companion Auto Update]] zur Benachrichtigung per Email bei Updates benutze ich seit Wordpress 6.6 das integrierte Plugin-Update. Die bisher empfohlene Plugins [[https://de.wordpress.org/plugins/mail-on-update/|Mail On Update]] und [[https://wordpress.org/plugins/wp-updates-notifier/|WP Updates Notifier]] werden scheinbar nicht mehr gepflegt.
* [[https://wordpress.org/plugins/wp-google-maps/|WP Go Maps]] für Karten. In der kostenlosen Version kann nur eine Karte angelegt und die Navigation nicht verwendet werden. Die Freischaltung der Datenübertragung gemäß DSGVO kann gesondert aktiviert werden. Neben Google-Maps-Karten können auch Open-Street-Map-Karten verwendet werden. Mit [[https://wordpress.org/plugins/geounit-maps/|GeoUnit]] können OpenStreetMap-Karten DSGVO-konform eingebunden werden. In der kostenlosen Version können mehrere Karte aber mit nur jeweils einem Marker angelegt werden. Routing ist allerdings auch in der kostenpflichtigen Version nicht möglich.
Das das zuvor verwendete [[https://wordpress.org/plugins/wp-flexible-map/|WP Flexible Map]] hat seit 2019 keine Updates mehr im [[https://github.com/webaware/flexible-map|Github-Repository]] bekommen, im [[https://plugins.trac.wordpress.org/log/wp-flexible-map/|Wordpress-Repository]] wird jedoch die Wordpress-Kompatibilität noch aktualisiert (Stand 2024).
* [[https://de.wordpress.org/plugins/antispam-bee/|Antispam Bee]] als Spamschutz
* [[https://de.wordpress.org/plugins/contact-form-7/|Contact Form 7]] für Kontaktformulare mit [[https://de.wordpress.org/plugins/contact-form-7-honeypot/|Contact Form 7 Honeypot]] als Spamschutz Das bisher empfohlene Plugin [[https://de.wordpress.org/plugins/si-contact-form/|Fast Secure Contact Form]] wird nicht mehr gepflegt. In den Versionen 4.0.52, 4.0.53, 4.0.54 und 4.0.55 war Spam enthalten, siehe [[https://web.archive.org/web/20180306142358/http://www.fastsecurecontactform.com/|Details]] vom ursprünglichen Plugin-Autor.
* [[https://de.wordpress.org/plugins/cachify/|Cachify]] als Cache
* [[https://de.wordpress.org/plugins/download-monitor/|Download-Monitor]] oder [[https://de.wordpress.org/plugins/download-manager/|Wordpress Download Manager]] als Downloadmanager (falls erforderlich). Ich verwende kein Plugin mehr, sondern gestalte die Download-Seiten mit Wordpress-Bordmitteln. Das bisher empfohlene [[https://wordpress.org/plugins/wp-filebase/|WP-Filebase]] wird nicht mehr gepflegt.
* [[https://de.wordpress.org/plugins/enlighter/|Enlighter]] als Syntax-Highlighter Das bisher empfohlene Plugin [[https://wordpress.org/plugins/wp-syntax/|WP Syntax]] wird nicht mehr gepflegt und ist (durch die enthaltene Geshi-Version) nicht kompatibel zu PHP 8.0 und höher.
===== Links =====
* [[http://wordpress.org|Homepage]]