WordPress: Den Permalink eines Inhaltstyp nachträglich verändern

Bei Themeforest gibt es viele günstige WordPress Themes und diese haben häufig ihre eigenen Inhaltstypen. Manche Inhaltstypen sind wirklich klasse. Bspw. gibt es gelegentlich die Customer Stories, die man eventuell anders benennen möchte, damit der Permalink besser zu lesen oder einfach eingedeutscht ist. WordPress bietet dafür eine Hook und mit dieser Hook können wir die Argumente die bei der Erstellung des Inhaltstyps festgelegt wurden, nachträglich verändern.

Permalink nachträglich verändern

Die Hook bzw. der Filter für die Veränderung lautet register_post_type_args und diesen können wir jederzeit ansteuern. Wenn wir jetzt bspw. einen Inhaltstyp Customer Stories (customer_story) haben und den Slug für die URL in kunden umbenennen wollen, dann müssen wir folgendes machen:

<?php // functions.php

/**
 * Filter alle Inhaltstypen und verändert den Permalink der Customer Stories.
 *
 * @param array $args Die ursprünglichen Argumente des Inhaltstyps.
 * @param string $post_type Der Inhaltstyp.
 *
 * @return array
 */
function pixelbart_modify_customer_stories( $args, $post_type ) {
	if ( 'customer_story' !== $post_type ) {
		return $args;
	}

	$args['rewrite']['slug'] = 'kunden';

	return $args;
}

/**
 * Hier werden die neuen Argumente an die Customer Stories übergeben.
 */
add_filter( 'register_post_type_args', 'pixelbart_modify_customer_stories', 10, 2 );Code-Sprache: HTML, XML (xml)

Erst prüfen wir, innerhalb der pixelbart_modify_customer_stories Funktion, ob es sich um den Inhaltstypen handelt, den wir verändern wollen. Wenn dem so ist, teilen wir dem Inhaltstyp mit, dass der Slug für die Permalinks kunden und nicht mehr customer_story lautet. Das packen wir alles in die functions.php unseres WordPress Themes oder in eigenes WordPress Plugin. In einem anderem Beitrag habe ich einmal erklärt, wie man PHP Code innerhalb von WordPress ausführt.

Damit WordPress die Veränderungen auch erkennt, müssen wir noch im WordPress Admin unter Einstellungen den Punkt Permalinks öffnen. Dann werden automatisch alle Permalinks innerhalb von WordPress erneut geprüft und geladen. Wenn du bspw. mal deine .htaccess gelöscht hast, kannst du sie dort auch wieder erstellen. WordPress kümmert sich um den Rest und du hast keine Kopfschmerzen mehr.

Wichtig ist, dass man mit register_post_type_args alle Argumente eines Inhaltstypen verändern kann. Wenn also mal eine Beschreibung nicht so richtig passt, dann kann man hiermit auch die Labels nachträglich verändern.

Ergebnis

Dein Permalink sollte dann nicht mehr domain.de/customer_story/ sondern domain.de/kunden/ lauten. Darüber sind jetzt deine Customer Stories verfügbar und für deine Suchmaschinenoptimierung ist es auch besser, weil du alles schön eingedeutscht hast. Jetzt weißt du auf jeden Fall, wie du deine Inhaltstypen retuschieren kannst, damit sie besser aussehen.