Réécrire un permalien de type post personnalisé avec un terme de taxonomie?

16

J'essaie de réécrire mon URL pour un custom_post_type nommé wr_eventsavec l'un de ses termes custom_taxonomy deevent_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;
}

Donc, dans mon cas, mes termes de taxonomie seraient "ateliers" ou "conférences", etc. url/events/lecturesou url/events/workshopsrépertorie tous mes messages liés à cette "catégorie", url/eventsaffiche une archive personnalisée pour tous mes événements. -> c'est juste ce que je veux mais la seule chose qui ne fonctionne pas est l'url complète de la publication personnalisée elle-même…

url/events/lectures/post-name - lance un 404!

Une idée pourquoi cela se produit? Ma events_permalink_structure()fonction semble fonctionner correctement car elle remplace mes permaliens exactement comme je le souhaite.

J'ai installé le plugin "Rewrite Analyzer" et il me montre "Regex est vide" pour wr_event.

J'ai également essayé de vider les règles de réécriture en visitant les paramètres de permalien. Cependant aucun effet.

mathiregister
la source

Réponses:

10

Remplacez tous vos% event% par% event_type%. J'espère que cela fonctionne pour vous.

offroff
la source
Merci beaucoup! Impressionnant! Ne comprenez pas, mais cela fonctionne :)
mathiregister
2
@mathiregister - c'est parce que WP ne comprend pas automatiquement la balise% event%, mais il comprend que% event_type% correspond à la taxonomie de votre type d'événement.
Stephen Harris
Maintenant, j'ai un type de message personnalisé avec slug /catalog/qui affiche tous les messages, /katalog/whatever/affiche les messages dans une taxonomie personnalisée avec slug et /katalog/whatever/mypostaffiche un seul message qui appartient à la taxonomie. Mettez simplement au lieu de %event%dans le code au-dessus de votre nom de taxonomie personnalisé avec%%