Ich habe ein System für eine WordPress-Website mit gefälschten Seiten und einige Plugins wie weitere Typen (für benutzerdefinierte Post-Typen), erweiterte benutzerdefinierte Felder und weitere Taxonomien erstellt. Die Website hat einen Post-Typ für Bänder und Releases.Benutzerdefinierter Permalink für benutzerdefinierte Beitragstyp
Am Frontend funktioniert alles sehr gut, und wenn ein Benutzer über eine Band lesen möchte, klickt er auf das Menü und landet bei /band/[bandname]
. Wenn er über eine Veröffentlichung lesen will, landet er bei /band/[bandname]/releases/[releasename]
.
Wie gesagt, im Frontend läuft alles gut. Aber wenn ich ein Release im Backend erstelle, fällt es mir schwer, den /band/[bandname]
Teil zum Permalink für die Post-Typ Releases hinzuzufügen. Ich habe versucht mit /band/%band%/releases/
, aber% band% wird buchstäblich geschrieben, da es nicht weiß, woher man den Bandnamen bekommen soll. Irgendwelche Ideen?
Ich habe versucht, diesen Code zu verwenden. Band
ist eine Post-Objekteingabe im Formular zum Senden von Releases.
add_filter('post_type_link', 'custom_permalinks', 10, 3);
function custom_permalinks($permalink, $post, $leavename)
{
$post_id = get_post_meta($_POST['band'], 'bands', true);
if($post->post_type != 'utgivelse' || empty($permalink) || in_array($post->post_status, array('draft', 'pending', 'auto-draft')))
return $permalink;
$var1 = get_post_meta($post_id, 'bands', true);
$var1 = sanitize_title($var1);
$permalink = str_replace('%band%', $var1, $permalink);
return $permalink;
}
ziemlich nah an, was ich tat. Aber wenn ich mehr Unterkategorien bekomme, versagt es irgendwie, wenn ich versuche, im Editor auf sie zu verlinken. Sie verstehen die Permalinks nicht. Wenn ich also auf die Releases verlinke, kennt es den Bandnamen nicht. – janlindso
Es ist eine schlechte Idee, Regeln bei jedem Laden der Seite zu löschen. –
Deshalb habe ich es kommentiert. Dieser Filter sollte nur ausgeführt werden, wenn neue Regeln hinzugefügt werden. – Alberto