Benutzer-Werkzeuge

Webseiten-Werkzeuge


wordpress

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

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

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

Nützliche Plugins

wordpress.txt · Zuletzt geändert: 2017/01/22 21:06 von olli