Modificar reglas de reescritura de tipo de publicación personalizadas en una función separada

4

Quiero modificar las reglas de reescritura para un tipo de publicación personalizada, tribe_events , que se registra como un tipo de publicación en los archivos del complemento principal del "Calendario de eventos" (the-events-calendar.class línea 24):

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

Lo que me gustaría hacer es modificar la línea:

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

Para:

'reescribir' = > array ('slug' = > 'evento /% lugares%', 'with_front' = > false)

Donde "% lugares%" es el nombre de una taxonomía personalizada.

Entonces mi plan es usar la siguiente función para completar el proceso de reescritura:

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;
}

El problema es que no quiero modificar los archivos del complemento del núcleo. ¿Hay alguna forma de modificar el argumento de reescritura de tipo de publicación personalizado en una función separada desde las funciones de mi tema?

¡Gracias!

    
pregunta j-man86 31.05.2012 - 00:20

1 respuesta

2

Sí, creo que puedes. Pegue este código en el archivo functions.php de su tema:

function change_tribe_events_rewrite_rules() {
    global $wp_post_types;
    $rewrite = &$wp_post_types['tribe_events']->rewrite;
    $rewrite['slug'] = 'event/%lugares%';
}
add_action( 'init', 'change_tribe_events_rewrite_rules', 999 );
    
respondido por el shea 29.10.2012 - 10:23

Lea otras preguntas en las etiquetas