Basis-Domain einer Multisite-Umgebung ändern

altedomain.tld soll in neuedomain.tld geändert werden. Zunächst die wp-config.php im WordPress-Stammverzeichnis anpassen.

define('DOMAIN_CURRENT_SITE', 'neuedomain.tld');

Dann Veränderungen in der MySQL-Datenbank vornehmen.

  1. In der Tabelle prefix_options ist die altedomain.tld in neuedomain.tld zu ändern in den Zeilen siteurl und home.
  2. In der Tabelle prefix_blogs sind ggf. die Subdomains von subdomain.altedomain.de in subdomain.neuedomain.de, sowie die altedomain.de in neuedomain.tld anzupassen.
  3. In der Tabelle prefix_site ist die Spalte site anzupassen und in der Tabelle prefix_sitemeta der Wert für siteurl.

Anschließend in den Inhalten (Seiten, Beiträge) entweder via Hand in der MySQL-Datenbank oder mit einem Plugin zum Suchen und Ersetzen von Text die URIs (auch zu eingebundenen Medien) verändern.

Widget der Schlagwörter-Wolke anpassen

In der Theme-Entwicklung kann es interessant sein, das Widget Schlagwörter-Wolke anzupassen. Dabei stehen die gleichen Parameter zu Verfügung, wie wenn die Wolke via wp_tag_cloud in das Theme integriert wird. In diesem Beispiel wird die Anzahl der Schlagwörter auf 24 begrenzt.

add_filter( 'widget_tag_cloud_args' , 'tag_cloud_args' );

function tag_cloud_args($args) {
  $args = array(  'number' => 24 );
  return $args;
}

Dashicons: Native WordPress-Icons im Theme nutzen

Die Icons im Administrationsbereich von WordPress entstammen seit Version 3.8 einer eigenen Schriftart, die unter GPL lizenziert ist. Die Dashicons lassen sich nicht nur bei der Pluginentwicklung für das Backend, sondern auch im Frontend einsetzen.

functions.php

add_action( 'wp_enqueue_scripts', 'load_dashicons_front_end' );
function load_dashicons_front_end() {
wp_enqueue_style( 'dashicons' );
}

Alternativ kann wp_enqueue_style( 'dashicons' ); in den bereits bestehenden Hook des Themes eingebunden werden.

style.css

Einbinden des WordPress-Logos vor allen Überschriften erster Ebene <h1>.

h1:before {
    content: "\f120";
    display: inline-block;
    -webkit-font-smoothing: antialiased;
    font: normal 1em 'dashicons';
    vertical-align: top;
}

Grundlegender Plugin-Header

<?php
/**
* Plugin Name: Beispiel Plugin
* Plugin URI: http://domain.tld/beispiel-plugin/
* Description: Mit diesem Beispiel Plugin wird der Plugin-Header erklärt.
* Version: 0.1
* Author: Vorname Nachname
* Author URI: http://domain.tld
* Text Domain: beispiel-plugin
* Domain Path: /languages
* License: GPL2 or later
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
*/

/**
* GPL2 License Text
Copyright JAHR VORNAME NACHNAME E-MAIL-ADRESSE
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

/**
* Avoid direct calls
*/
defined('ABSPATH') or die("No direct requests for security reasons."); 
?>

wp-config: SSL, Dateibearbeitung, Autosave, Revisionen, Papierkorb

Die Datei wp-config.php ist zentral für weitgehende Einstellungen. Sofern SSL verfügbar ist, kann aus Sicherheitsgründen der Login über eine SSL-Verbindung erzwungen werden. Gleiches kann für die gesamte Nutzung des Administrationsbereichs festgelegt werden. Das Intervall zur automatischen Speicherung, dass normalerweise bei 60 Sekunden liegt und die Tage die vergehen, bis ein Beitrag endgültig aus dem Papierkorb gelöscht wird, können angepasst werden. WordPress speichert außerdem automatisch jede Version eines Beitrags, die abgespeichert wird. Dies kann die Datenbank unnötig anwachsen lassen und ebenfalls konfiguriert werden.

// Login via SSL erzwingen (Standard: false)
define('FORCE_SSL_LOGIN', true);

// Adminbereich nur über SSL nutzen (Standard: false)
define('FORCE_SSL_ADMIN', true);

// Bearbeiten von Theme- und Plugindateien im Administrationsbereich verbieten (Standard: false)
define('DISALLOW_FILE_EDIT', true);

// Installation und Aktualisierung von Themes und Plugins verbieten (Standard: false)
define('DISALLOW_FILE_MODS', true);

// Intervall für automatisches Speichern in Sekunden (Standard: 60).
define('AUTOSAVE_INTERVAL', 120 );

// Intervall für endgültiges Löschen von Beiträgen in Tagen (Standard: 30).
define('EMPTY_TRASH_DAYS', 14);

/**
  * Revisionen
  * Die automatische Speicherung jeder Version eines Beitrags kann mit
  * define('WP_POST_REVISIONS', false ); deaktiviert werden. Alternativ kann
  * eine maximale Anzahl festgelegt werden.             
*/
define('WP_POST_REVISIONS', 5 );

Referenz & Generator

Codestyling mit Prism ohne Plugin umsetzen

Das Plugin SyntaxHighlighter Evolved ist eine der Standardlösungen, wenn es um das Formatieren von Quellcode geht. Dieser Weg kann allerdings gehörig auf die Performance drücken. Eine Alternative ist das Codestyling mit dem jeweiligen Theme zu verknüpfen und eine kleinere JavaScript-Bibliothek wie Prism oder highlight.js zu nutzen.

Das Beispiel geht unter Verwendung der Bibliothek Prism davon aus, dass die Dateien prism.js und prism.css im Themeordner abgelegt werden. Außerdem soll der visuelle Editor zum komfortablen Formatieren angepasst werden.

functions.php

// Prism JS und CSS einbinden
function codestyling_scripts_styles() {
 wp_register_script( 'prism', get_template_directory_uri() . '/prism.js', '', '0.1', true );
 wp_enqueue_script( 'prism' );
 wp_register_style( 'prism', get_template_directory_uri() . '/prism.css', false, '0.1', 'screen' );
 wp_enqueue_style( 'prism' );
 }
add_action( 'wp_enqueue_scripts', 'codestyling_scripts_styles' );

// TinyMCE-Editor anpassen
function mce_mod( $init ) {
$init['block_formats'] = 'Paragraph=p;Pre=pre;Code=code;Heading 2=h2;Heading 3=h3;Heading 4=h4;Blockquote=blockquote';
$style_formats = array(
array( 'title' => 'CSS', 'block' => 'code', 'classes' => 'language-css'),
array( 'title' => 'HTML/XHTML', 'block' => 'code', 'classes' => 'language-markup' ),
array( 'title' => 'PHP', 'block' => 'code', 'classes' => 'language-php' ),
array( 'title' => 'JavaScript', 'block' => 'code', 'classes' => 'language-javascript' ),
array( 'title' => 'HTTP', 'block' => 'code', 'classes' => 'language-http' ));
$init['style_formats'] = json_encode( $style_formats );
return $init;
}
add_filter('tiny_mce_before_init', 'mce_mod');
function mce_add_buttons( $buttons ){
array_splice( $buttons, 1, 0, 'styleselect' );
return $buttons;
}
add_filter( 'mce_buttons_2', 'mce_add_buttons' );

Referenz

WordPress.org vs. WordPress.com oder Selbstbestimmung vs. Zurücklehnen

Immer wieder taucht, insbesondere bei Neulingen im Feld, die Frage auf, was denn der Unterschied zwischen WordPress.org und WordPress.com sei oder der Begriff WordPress wird mit einem der beiden Angebote gleichgesetzt.

Zur Begriffsdifferenzierung: WordPress ist eine Software. Sie kann auf WordPress.org heruntergeladen und auf einem eigenen Speicherplatz oder Server installiert werden. Gleichermaßen ist WordPress Grundlage für den Service WordPress.com, der niedrigschwellige bereits voreingerichtete Installationen bietet, die von der Betreiberfirma gewartet wird.

 WordPress.orgWordPress.com AnfängerWordPress.com PremiumWordPress.com Business
WordPress.orgWordPress.com AnfängerWordPress.com PremiumWordPress.com Business
KostenDomain + Speicherplatz ab 20 Euro/JahrKostenlos80 Euro/Jahr240 Euro/Jahr
Domainnameab 5 Euro/Jahr (z.B. netcup)name.wordpress.cominbegriffeninbegriffen
Speicherplatz (Webhosting)10GB ab ca. 20 Euro/Jahr (z.B. netcup oder uberspace) / Mindestvorraussetzungen3GB13GBUnbegrenzt
Plugins (erweiternde Funktionen)frei installierbar (z.B. ~ 32.000 aus dem WordPress.org Plugin-Verzeichnis)rund 20 vorinstallierte Pluginsrund 20 vorinstallierte Pluginsrund 20 vorinstallierte Plugins
Themesfrei installierbar (z.B. ~ 3.000 aus dem WordPress.org Theme-Verzeichnis)Auswahl aus rund 300 Themes, keine Anpassung möglichAuswahl aus rund 300 Themes, Anpassung möglichAuswahl aus rund 300 Themes, Anpassung möglich
individuelles Themeinstallierbarnicht installierbarnicht installierbarnicht installierbar
Theme-Konfiguration über functions.phpmöglichnicht möglichnicht möglichnicht möglich
Zugriff auf alle Dateien (WordPress, Plugins, Themes, Medien) via SFTP oder SSHjaneinneinnein
Hilfestellungen (Support)über einschlägige Foren und in der Regel auch über den Webhosting-Anbieterüber einschlägige ForenE-Mail-SupportChat
WerbeanzeigenNeinJaNeinNein
Wartungsarbeitenautomatische Aktualisierung möglich; eigene Verantwortung für Sicherheit und Funktiondurch die Betreiber von WordPress.comdurch die Betreiber von WordPress.comdurch die Betreiber von WordPress.com

Es gibt neben WordPress.com weitere Anbieter, die vorinstallierte Installationen mit begrenztem Gestaltungsspielraum anbieten. Das Prinzip unterscheidet sich dann unwesentlich, bei der Preisgestaltung und den Funktionen kann es Unterschiede geben. Der für die Variante der selbstinstallierten Software angegebene Preis kann erheblich abweichen, je nachdem ob die Website zum Beispiel sehr hohe Zugriffszahlen verzeichnet oder nicht.

Referenz & Weiterführendes

Lösungen für mehrsprachige Websites in Single- oder Multisite-Umgebungen

Lösung über eine Singlesite-Umgebung

Grundsätzliche Vorteile bei einer Lösung in einer Singlesite-Umgebung:

  • in der Regel funktioniert das Wechseln zwischen verschiedenen Sprachversionen über Tabs mit einem Klick, dadurch schnelleres Arbeiten im Administrationsbereich
  • die Mediendateien der Website müssen nicht über eine weitere Lösung im ganzen Multisite-Netzwerk verfügbar gemacht werden
  • nur eine Website muss z. B. hinsichtlich anderer Plugins verwaltet und konfiguriert werden

Plugin-Lösungen für Singlesite-Umgebung:

  • Polylang, kostenlos; Besonderheit: jede Sprachversion wird in eigenen Beitrag / einer Seite gespeichert (Deinstallation leichter möglich)
  • qtranslate x, kostenlos; Besonderheit: Nachfolger von qtranslate, lange Zeit Platzhirsch im kostenfreien Bereich, aber nicht immer mit der aktuellsten WordPress-Version nutzbar
  • stella, einmalig $15; Besonderheit: Oberfläche und Dokumentation nicht in deutscher Sprache verfügbar
  • WPML, ab $29 mit eingeschränkten Funktionen, $195 für unbegrenzte Nutzung/Updates; Besonderheit: Schnittstelle für professionelle Übersetzungsdienstleistung integriert

Lösung über eine Multisite-Umgebung

Grundsätzliche Vorteile bei einer Multisite-Umgebung:

  • in der Regel bessere Performance der Website für den Nutzer, da klare Trennung der Sprachversionen
  • keine größeren Eingriffe in die Datenbank, die eine Deinstallation zu einem anstrengenden Unterfangen machen
  • bei Deinstallation des Plugins existieren die Sprachversionen weiter und können weiter genutzt werden (ggf. nur weniger komfortabel)

Plugin-Lösungen für Multisite-Umgebung

Feed-Links automatisch in wp_head ausgeben

functions.php
add_theme_support('automatic-feed-links'); generiert am Beispiel von wpdoc.de:

<link rel="alternate" type="application/rss+xml" title="WordPress Doc &raquo; Feed" href="http://wpdoc.de/feed/" />
<link rel="alternate" type="application/rss+xml" title="WordPress Doc &raquo; Kommentar-Feed" href="http://wpdoc.de/comments/feed/" />

Referenz