Dies ist eine alte Version des Dokuments!
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/“).
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');
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"]
Adminbereich mit SSL-Proxy absichern
All-Inkl bietet mittlerweile kostenlos SSL mittels SNI an, so dass die folgende Konfiguration für den SSL-Proxy nicht mehr nötig ist und nicht mehr empfohlen wird, da das Plugin wahrscheinlich nicht mehr weiterentwickelt wird.
Um den Adminbereich von Wordpress zu schützen, sollte eine SSL-Verschlüsselung benutzt werden. Viele Provider, z.b. all-inkl bieten einen SSL-Proxy (http://ssl-account.com/domainname) an. Um den SSL-Proxy zu benutzen, wird folgendes in die wp-config.php eingetragen:
if( isset( $_SERVER['HTTP_X_FORWARDED_SERVER'] ) ) { //with SSL-Proxy $_SERVER['HTTPS']='on'; $_SERVER['HTTP_HOST'] = 'ssl-account.com'; $_SERVER['REQUEST_URI']='/e-dschungel.de'. $_SERVER['REQUEST_URI']; define('WP_SITEURL', 'https://ssl-account.com/e-dschungel.de'); define('WP_HOME', 'https://ssl-account.com/e-dschungel.de'); define('COOKIE_DOMAIN', 'ssl-account.com'); define('COOKIEPATH', '/e-dschungel.de/'); } else { //without SSL proxy everything is configured automatically }
Um zu vermeiden, dass beim Bearbeiten von Artikel über den SSL-Proxy falsche (d.h. Links via SSl-Proxy) gespeichert werden kann man das Plugin SSL Proxy URL Fixer verwenden. Damit alle Logins über den SSL-Proxy laufen, werden alle Zugriffe mit .htaccess umgeleitet:
#force SSL login <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / # redirect wp-(admin|login|register)* to HTTPS RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl-account\.com$ [NC] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^wp-(admin|login|register)(.*) https://ssl-account.com/e-dschungel.de # redirect xmlrpc* to HTTPS RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl-account\.com$ [NC] RewriteRule ^xmlrpc(.*) https://ssl-account.com/e-dschungel.de/xmlrpc$1$ </IfModule>
Um zu verhindern, dass Suchmaschinen den Inhalt über den SSL-Proxy indizieren und wegen Duplicate Content abwertet, kann man Apache eine andere robots.txt über den SSL-Proxy ausliefern lassen. Dazu werden in der .htaccess folgende Befehle vor den Befehlen für Wordpress eingetragen:
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-FORWARDED-SERVER} ^ssl-account\.com$ [NC] RewriteRule ^robots\.txt$ robots_ssl.txt [L] </IfModule>
Damit wird beim Zugriff über den SSL-Proxy die Datei robots_ssl.txt ausgeliefert, wenn robots.txt angefordert wird. Mit dem Inhalt
User-agent: * Disallow: /
der Datei robots_ssl.txt wird die Indizierung komplett verboten.
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
- Companion Auto Update zur Benachrichtigung per Email bei Updates
Die bisher empfohlene Plugins Mail On Update und WP Updates Notifier werden scheinbar nicht mehr gepflegt.
- WP Flexible Map für Karten
Das noch etwas umfangreichere Comprehensive Google Map Plugin wird nicht mehr gepflegt.
- 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.