Einen benutzerdefinierten Permalink nach Typ mit Taxonomiebegriff umschreiben?


16

Ich versuche, meine URL für einen custom_post_type umzuschreiben, der wr_eventsmit einem seiner custom_taxonomy-Begriffe aus benannt istevent_type

add_action('init', 'wr_events');

function wr_events() {

     register_taxonomy(
        'event_type',
        'wr_event',
        array(
            'label' => 'Types',
            'singular_label' => 'Typ',
            'hierarchical' => true,
            'query_var' => true,
            'rewrite' => array('slug' => 'events'),
        )
    );

    $labels = array(
        'name' => _x('Events', 'post type general name'),
        'singular_name' => _x('Event', 'post type singular name')
    );

    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'query_var' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'menu_position' => null,
        'supports' => array('title','editor','thumbnail', 'excerpt'),
        'rewrite' => array(
            //'slug' => 'event',
            'slug' => 'events/%event%',
            'with_front' => false
        ),
        'has_archive' => 'events'
    ); 

    register_post_type( 'wr_event' , $args );
    flush_rewrite_rules();
}

add_action('save_post', 'save_details');

add_filter('post_type_link', 'events_permalink_structure', 10, 4);
function events_permalink_structure($post_link, $post, $leavename, $sample)
{
    if ( false !== strpos( $post_link, '%event%' ) ) {
        $event_type_term = get_the_terms( $post->ID, 'event_type' );
        $post_link = str_replace( '%event%', array_pop( $event_type_term )->slug, $post_link );
    }
    return $post_link;
}

In meinem Fall wäre mein Taxonomiebegriff "Workshops" oder "Vorträge" usw. url/events/lecturesoder url/events/workshopslistet alle meine Beiträge zu dieser "Kategorie" auf und url/eventszeigt ein benutzerdefiniertes Archiv für alle meine Veranstaltungen. -> das ist genau das was ich will aber das einzige was nicht funktioniert ist die komplette URL zum Custom-Post selbst ...

url/events/lectures/post-name - wirft einen 404!

Irgendeine Idee, warum das passiert? Meine events_permalink_structure()Funktion scheint korrekt zu funktionieren, da sie meine Permalinks genau so ersetzt, wie ich es möchte.

Ich habe das Plugin "Rewrite Analyzer" installiert und es zeigt mir "Regex ist leer" für wr_event.

Ich habe auch versucht, die Rewrite Rules zu löschen, indem ich die Permalink-Einstellungen aufgerufen habe. Jedoch keine wirkung.

Antworten:


10

Ändern Sie alle% event% in% event_type%. Ich hoffe das klappt bei dir


Vielen vielen Dank! Genial! Verstehe nicht, aber es funktioniert :)
Mathiregister

2
@mathiregister - WP versteht das Tag% event% nicht automatisch, aber% event_type% entspricht Ihrer Event-Typ-Taxonomie.
Stephen Harris

Jetzt habe ich einen benutzerdefinierten Beitragstyp mit Slug, /catalog/der alle Beiträge /katalog/whatever/anzeigt, Beiträge in benutzerdefinierter Taxonomie mit Slug, was auch immer, und /katalog/whatever/myposteinzelne Beiträge anzeigt, die zur Taxonomie gehören, was auch immer. %event%%%
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.