WordPress: Neuer Custom Page Type und Permalink Problem

Für mein Projekt www.autoachrichten.de habe ich gerade einen neuen Custom Post Type eingerichtet. Durch die WordPress Dokumentation auch kein großes Problem. In der functions.php kommt folgender Aufruf hinzu


add_action( 'init', 'create_post_type' );
function create_post_type() {
	register_post_type( 'product',
		array(
			'labels' => array(
				'name' => __( 'Products' ),
				'singular_name' => __( 'Product' )
			),
		'public' => true,
		'has_archive' => true,
		)
	);
}

Quelle: codex.wordpress.org

Durch dieses kleine PHP Snipped erscheint im Adminbereich ein neuer Eintrag im Menü. Hier können jetzt alle neuen Posts des neuen Post Types angelegt werden. In der Vorschau auch überhaupt kein Problem. Sobald der Artikel gespeichert ist und der neue Artikel über den Permalink aufgerufen wird, kamen bei mir durchgehend 404 Fehler.

Da ich jetzt eine Weile Googeln musst um dem Problem auf die Schliche zu kommen, wollte ich meine gefundenen Ergebnisse einmal zusammen tragen.

  • Der Custom Post Type nutzt den selben Namespace wie ein installiertes Plugin
  • Der Custom Post Type heißt wie eine verwendete Kategorie oder Tag
  • Der Custom Post Type nutzt den selben Namen wie eine vorhanden Page

Alles hat bei mir nicht zugetroffen. Die Lösung war dann doch sehr simpel: Damit der interne Cache aller Rewrite Rules geleert wird, muss einmal die Permalink Seite im WP-Admin aufgerufen werden. Bei ganz hartnäckigen Fällen sollt das ändern (und wieder zurück) der Permalink Struktur helfen. Jetzt ist der neue Custom Post Type auch in den Rewrite Rules vorhanden und die Seiten werden gefunden.

Wie bei allen arbeiten an WordPress sollte die Seite einmal gesichert werden um Datenverlust zu vermeiden.

Danke an wpmu.org, hier gab es die Fehlerlösung
wpmu.org/troubleshooting-wordpress-404-errors-with-custom-post-types/

Invalid command ‘Header’, perhaps misspelled or defined by a module not included in the server configuration

Neuer Server, gleiche Fehlermeldungen.
Hier mal ein Klassiker, der bei jedem Projekt auftaucht bei dem erstmal Caching und Clientverhalten verbessert werden soll.

Hier handelt es sich nicht wirklich um einen Fehler, des fehlt nur ein Apache Modul, was noch gestartet werden muss. Es gibt zwei Möglichkeiten das zu tun. Die von mir beforzugte

a2enmod headers

mit diesem Befehl lassen sich auch alle anderen Module für den Apache aktivieren bzw. deaktivieren (a2dismod).

Der Vollständigkeit halber kann man ein Apache Modul auch manuell aktiven in dem man einen Symlink von “mods-available” nach “mods-enabled” setzt. Konkret sieht das dann so aus:

ln -sf /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load

Wie bei allen Änderungen am Apache muss er auch in diesem Fall neu gestartet werden

/etc/init.d/apache2 restart

Viel Erfolg!