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!
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);