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.

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.

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' );

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

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

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

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).