Inhaltsverzeichnis
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 WP No Category Base ab Version 1.1.0 kann der gleiche Effekt erzielt werden. Das Plugin No Category Parents mit diesem 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 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 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 hier beschrieben:
Damit das auch für Seiten funktioniert, muss man im Child-Theme noch eine Datei page.php mit folgendem Inhalt anlegen:
- page.php
<?php /** * The template for displaying all pages. * * This is the template that displays all pages by default. * Please note that this is the WordPress construct of pages * and that other 'pages' on your WordPress site will use a * different template. * * @package WordPress * @subpackage Twenty_Eleven * @since Twenty Eleven 1.0 */ get_header(); ?> <div id="primary"> <div id="content" role="main"> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part( 'content', 'page' ); ?> <?php comments_template( '', true ); ?> <?php endwhile; // end of the loop. ?> </div><!-- #content --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?>
Ü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 '<link rel="shortcut icon" type="image/x-icon" href="'.get_bloginfo('wpurl').'/favicon.ico" />'; } 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 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 "<b>FEHLER:</b> 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 Search and Replace Script (läuft unabhängig von Wordpress) oder Better Search Replace als Wordpress-Plugin. Wordpress selbst bietet mittlerweile auch eine eigene Funktion dafür an.
- Sitemapadresse in der
robots.txt
auf HTTPS umstellen - Google Webmastertools auf HTTPS umstellen
- Werden 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 SSLCheck
- Umleitung von HTTP nach HTTPS einrichten
- SSL-Einstellungen überprüfen, dabei hilft 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:
<IfModule mod_rewrite.c> 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 </IfModule>
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
- Tiny MCE Advanced ein erweiterter Editor
Wird scheinbar nicht mehr gepflegt.
- Google XML Sitemaps zur Generierung von Sitemaps für Suchmaschinen
- Statt des bisher empfohlenen PluginsCompanion Auto Update zur Benachrichtigung per Email bei Updates benutze ich seit Wordpress 6.6 das integrierte Plugin-Update.
Die bisher empfohlene Plugins Mail On Update und WP Updates Notifier werden scheinbar nicht mehr gepflegt.
- 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 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 WP Flexible Map hat seit 2019 keine Updates mehr im Github-Repository bekommen, im Wordpress-Repository wird jedoch die Wordpress-Kompatibilität noch aktualisiert (Stand 2024).
- Antispam Bee als Spamschutz
- Contact Form 7 für Kontaktformulare mit Contact Form 7 Honeypot als Spamschutz
Das bisher empfohlene Plugin 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 Details vom ursprünglichen Plugin-Autor.
- Cachify als Cache
- Download-Monitor oder Wordpress Download Manager als Downloadmanager (falls erforderlich). Ich verwende kein Plugin mehr, sondern gestalte die Download-Seiten mit Wordpress-Bordmitteln.
Das bisher empfohlene WP-Filebase wird nicht mehr gepflegt.