Benutzerdefinierter Permalink für eine bestimmte Kategorie

Ich versuche, einen benutzerdefinierten Permalink für einen benutzerdefinierten Posttyp zu erstellen und ihn nur auf eine bestimmte Kategorie anzuwenden. Zum Beispiel möchte ich diese URL von http://www.example.com/events/event-name in http://www.example.com/webinars/event-name ändern.

Dies ist der Code, den ich bisher habe, der nicht funktioniert:

function change_webinar_links($permalink) { global $post; if(get_post_type() == 'tribe_events' && has_category('webinar', $post->ID)) { $permalink = trailingslashit( home_url('/webinars/' . $post->post_name ) ); } return $permalink; } add_action( 'init', 'webinar_rewrite_rule'); function webinar_rewrite_rule() { global $post; if ( has_category('webinar', $post->ID) ) { add_rewrite_rule( '^webinars/([^/]+)/?', 'index.php?tribe_events=$matches[1]&post_type=tribe_events&name=$matches[1]', 'top' ); } } 

Solutions Collecting From Web of "Benutzerdefinierter Permalink für eine bestimmte Kategorie"

Ich habe eine Antwort auf die WordPress-Foren bekommen. Hier ist der Arbeitscode für diejenigen, die etwas Ähnliches tun wollen:

add_filter( 'post_type_link', 'change_webinar_links', 10, 2 ); function change_webinar_links( $link, $post) { if ( $post->post_type == 'tribe_events' && tribe_event_in_category('webinar') ) { $link = trailingslashit( home_url('/webinars/' . $post->post_name ) ); } return $link; } add_action( 'init', 'webinar_rewrite_rule', 5); function webinar_rewrite_rule() {
add_rewrite_rule( '^webinars/([^/]+)', 'index.php?tribe_events=$matches[1]&post_type=tribe_events&name=$matches[1]', 'top' ); }