web-dev-qa-db-fra.com

Modifier les règles de réécriture de type de post personnalisé dans une fonction distincte

Je souhaite modifier les règles de réécriture d'un type de message personnalisé, tribe_events, enregistré en tant que type de message dans les fichiers du plug-in principal "Le calendrier des événements" (ligne 24 de the-events-calendar.class):

    protected $postTypeArgs = array(
        'public' => true,
        'rewrite' => array('slug' => 'event', 'with_front' => false),
        'menu_position' => 6,
        'supports' => array('title','editor','excerpt','author','thumbnail', 'custom-fields'),
        'capability_type' => array('tribe_event', 'tribe_events'),
        'map_meta_cap' => true
    );

Ce que je voudrais faire, c'est modifier la ligne:

        'rewrite' => array('slug' => 'event', 'with_front' => false)

À:

'rewrite' => array ('slug' => 'event /% lugares%', 'with_front' => false)

Où "% lugares%" est le nom d'une taxonomie personnalisée.

Ensuite, mon plan est d'utiliser la fonction suivante pour terminer le processus de réécriture:

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

Le problème est que je ne veux pas modifier les fichiers du plugin principal. Existe-t-il un moyen de modifier l'argument de réécriture de type de message personnalisé dans une fonction distincte à partir du fichier functions.php de mon thème?

Merci!

4
j-man86

Oui, je crois que tu peux. Collez ce code dans le fichier functions.php de votre thème:

 function change_tribe_events_rewrite_rules () {
 global $ wp_post_types; 
 $ rewrite = & $ wp_post_types ['tribe_events'] -> réécrire; 
 $ rewrite ['slug' ] = 'événement /% lugares%'; 
} 
 add_action ('init', 'change_tribe_events_rewrite_rules', 999); 
2
shea