WP Multisite, Custom Post Types + Permalinks

Eine der Neuerungen, welche bereits mit der WordPress-Version 3.0 eingeführt wurde, sind die Custom Post Types, mit denen sich relativ einfach ganz neue Container für die Inhalte einer Website erstellen lassen. Auch wenn die Custom Post Types bei einem normalen Blog vielleicht nicht zur Anwendung kommen, so waren sie doch wichtig, damit WordPress als CMS weiter wachsen konnte. Für einige Leser ist das vermutlich keine Neuigkeit. Inzwischen steht bereits die Version 3.4 kurz vor der Veröffentlichung und meine Einleitung erscheint wie Schnee von vorgestern. Aber …

Eine der Eigenschaften von Custom Post Types ist, dass sie sich auch automatisch an die Permalink-Struktur der WordPress-Installation anpassen. Allerdings funktioniert das Ganze erst dann reibungslos, nachdem man die Rewrite-Regeln zurückgesetzt hat. Als einfacher Workaround wird hierfür oft empfohlen, unter „Einstellungen › Permalinks“ im Adminbereich die bereits definierten Regeln noch einmal abzuspeichern. Für Entwickler wird gibt es die Möglichkeit, die Funktion flush_rewrite_rules() jeweils bei der Aktivierung eines Plugins auszuführen, wenn dort Custom Post Types zum Einsatz kommen.

Bei einer Multisite, wo ein derartiges Plugin vielleicht global aktiviert ist, wird die ganze Sache allerdings weitaus unsympathischer. Auch hier steht mir die Möglichkeit offen, in jedem Blog die Einstellungen neu abzuspeichern, was aber auch lästig werden kann.  Für den  Entwickler des Plugins wird die vorher genannte Lösung allerdings nicht mehr zielführend sein, weil hier globale Variablen mit der Funktionalität kollidieren, die das Wechseln zu den verschiedenen Blogs innerhalb des Plugins ermöglichen.

Arbeitet man mit einer Versionsnummer kann sich den Schritt ersparen, von den Benutzern unseres Plugins nach einem Update immer wieder das Deaktivieren/Aktivieren zu verlangen. Wird beispielsweise ein Custom Prost Type mit einem Action angelegt, der mit einer normalen Priorität (per Definition 10) in die Warteschlange geschoben wird, so kann man mit einem weiteren Action niedrigerer Priorität (beispielsweise 11 oder höher) dafür sorgen, das die Funktion flush_rewrite_rules() erst nach der Erstellung des Custom Post Types ausgeführt wird.


<?php
if ( !defined( 'MY_VERSION' ) )
define( 'MY_VERSION', 0.1 );
function my_refresh_plugin() {
if ( MY_VERSION != get_option( 'my_version' ) ) {
update_option( 'my_version', MY_VERSION );
flush_rewrite_rules( false );
}
}
add_action( 'init', 'my_refresh_plugin', 11, 0 );

Have fun!

2 Gedanken zu „WP Multisite, Custom Post Types + Permalinks“

  1. Das Plugin sieht interessant aus. Kann ich damit auch eine bereits bestehende Seite ohne grösseren Aufwand ebenfalls übersetzen? D.h. kann man ein Theme mit ganzem Inhalt und all seinen Bildern, Texten, Anpassungen, etc. kopieren und dann mit dem Language Switcher gewisse Teile übersetzen?

    1. Nein, der Multisite Language Switcher verbindet nur die verschiedenen Teile der Website. Das was Du da beschreibst, kann der Switcher (noch) nicht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

WP Multisite, Custom Post Types + Permalinks

Eine der Neuerungen, welche bereits mit der WordPress-Version 3.0 eingeführt wurde, sind die Custom Post Types, mit denen sich relativ einfach ganz neue Container für die Inhalte einer Website erstellen lassen. Auch wenn die Custom Post Types bei einem normalen Blog vielleicht nicht zur Anwendung kommen, so waren sie doch wichtig, damit WordPress als CMS weiter wachsen konnte. Für einige Leser ist das vermutlich keine Neuigkeit. Inzwischen steht bereits die Version 3.4 kurz vor der Veröffentlichung und meine Einleitung erscheint wie Schnee von vorgestern. Aber …

Eine der Eigenschaften von Custom Post Types ist, dass sie sich auch automatisch an die Permalink-Struktur der WordPress-Installation anpassen. Allerdings funktioniert das Ganze erst dann reibungslos, nachdem man die Rewrite-Regeln zurückgesetzt hat. Als einfacher Workaround wird hierfür oft empfohlen, unter „Einstellungen › Permalinks“ im Adminbereich die bereits definierten Regeln noch einmal abzuspeichern. Für Entwickler wird gibt es die Möglichkeit, die Funktion flush_rewrite_rules() jeweils bei der Aktivierung eines Plugins auszuführen, wenn dort Custom Post Types zum Einsatz kommen. (mehr …)

2 Gedanken zu „WP Multisite, Custom Post Types + Permalinks“

  1. Das Plugin sieht interessant aus. Kann ich damit auch eine bereits bestehende Seite ohne grösseren Aufwand ebenfalls übersetzen? D.h. kann man ein Theme mit ganzem Inhalt und all seinen Bildern, Texten, Anpassungen, etc. kopieren und dann mit dem Language Switcher gewisse Teile übersetzen?

    1. Nein, der Multisite Language Switcher verbindet nur die verschiedenen Teile der Website. Das was Du da beschreibst, kann der Switcher (noch) nicht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert