add_rewrite_rule não produz nada em $ _GET

4

Tentando obter bons permalinks para um plug-in que exibe eventos

Eu tenho isso:

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

e isso:

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

as regras de reconfiguração são liberadas no administrador quando as opções 'event_settings' são atualizadas.

Estou usando um incrível plugin de Jan Fabry chamado "Monkeyman Rewrite Analyzer", que pode mostrar como suas regras de reescrita estão sendo processadas (confira, é ótimo).

Estes são os resultados dos itens acima:

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

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

Substitution 
    pagename: events
    event_slug: some-event

também parece funcionar com uma barra adicional:

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

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

Substitution 
    pagename: events
    event_slug: some-event

esses resultados parecem estar funcionando corretamente, mas quando eu insiro "http: // localhost / events / some-event" no meu navegador, ele não redireciona como deveria.

Os arrays $ _GET e $ _REQUEST resultantes estão vazios.

O que estou fazendo errado ???

Toda e qualquer ajuda é muito apreciada, mas as respostas corretas serão mais apreciadas; )

Obrigado

    
por Brent Christensen 01.02.2012 / 21:32

1 resposta

5

Você pode usar a função get_query_var() .

Assim:

$event_slug = get_query_var('event_slug');

Mais informações no Codex .

    
por Rob Vermeer 01.02.2012 / 21:40