add_rewrite_rule no produce nada en $ _GET

4

Intentando que se produzcan los enlaces permanentes para un complemento que muestra eventos

Tengo esto:

function my_add_rewrite_rules() {

  global $wpdb;
  $org_options = get_option('event_settings');      
  // get id for events page     
  $event_page_id = $org_options['event_page_id'];   

  $SQL = 'SELECT post_name  FROM wp_posts WHERE ID = %d';
  $event_page = $wpdb->get_var( $wpdb->prepare( $SQL, $event_page_id ));

  add_rewrite_rule( $event_page . '/([^/]+)?/$', 'index.php?pagename=' . $event_page . '&event_slug=$matches[1]', 'top' );
  add_rewrite_rule( $event_page . '/([^/]+)?$', 'index.php?pagename=' . $event_page . '&event_slug=$matches[1]', 'top' ); 

}
add_action( 'init', 'my_add_rewrite_rules' );

y esto:

function add_query_vars( $query_vars ) {
  $query_vars[] = 'event_slug';
  return $query_vars;
}
add_filter( 'query_vars', 'add_query_vars' );   

las reglas de reescritura se desechan en el administrador cuando se actualizan las opciones 'event_settings'.

Estoy usando un increíble complemento de Jan Fabry llamado "Monkeyman Rewrite Analyzer" que puede mostrarle cómo se están procesando las reglas de reescritura (verifique que es genial).

Estos son los resultados de lo anterior:

Test URL
    http://localhost/events/some-event

Pattern
    events/([^/]+)?$    

Substitution 
    pagename: events
    event_slug: some-event

también parece funcionar con una barra inclinada adicional:

Test URL
    http://localhost/events/some-event/

Pattern
    events/([^/]+)?/$   

Substitution 
    pagename: events
    event_slug: some-event

estos resultados parecen funcionar correctamente, pero cuando ingreso "http: // localhost / events / some-event" en mi navegador, no se redirige como debería.

Las matrices resultantes $ _GET y $ _REQUEST están vacías.

¿Qué estoy haciendo mal?

Cualquier y toda ayuda es muy apreciada, pero las respuestas correctas se apreciarán más; )

Gracias

    
pregunta Brent Christensen 01.02.2012 - 21:32

1 respuesta

5

Puedes usar la función get_query_var() .

Me gusta así:

$event_slug = get_query_var('event_slug');

Más información en el Codex .

    
respondido por el Rob Vermeer 01.02.2012 - 21:40

Lea otras preguntas en las etiquetas