Interesting exercise. And following the tip of Robert Rozas (Muchas gracias!) I got to the following code (see comments for instructions detailed usage and other explanations).
In general, just copy the code into a PHP file and put it in the /wp-content/plugins.php
folder. Once activated, it is necessary to update the Permanent Links. After that, create a page-template for the Events page and use the example described in Usage Mode .
<?php
/**
* Plugin Name: Ano e mês para a página Eventos
* Plugin URI: https://pt.stackoverflow.com/a/8957/201
* Description: Adiciona as query vars /ano/mes/ à URL da página Eventos. Escrito com base no artigo publicado no blog rlmseo.com
* Author: brasofilo
* License: GPLv3
MODO DE USO
- Após ativar o plugin, atualize a configuração de Links Permanentes,
visitando /wp-admin/options-permalink.php e clicando em "Salvar alterações"
- Crie um Template para a página "Eventos"
e certifique-se que o slug da página é "eventos", ie, exemplo.com/eventos
- Na page template (page-eventos.php) do theme, utilize
if( isset( $wp_query->query_vars['ano'] ) && isset( $wp_query->query_vars['mes'] ) )
{
$ano = urldecode( $wp_query->query_vars['ano'] );
$mes = urldecode( $wp_query->query_vars['mes'] );
printf( '<h2>Ano: %s</h2>', $ano );
printf( '<h2>Mes: %s</h2>', $mes );
}
// ou use $ano = get_query_var('ano');
- Visite a página Eventos no site usando a URL exemplo.com/eventos/teste-ano/teste-mes/
- Agora é só usar as variáveis que vieram da URL, $ano e $mes
*/
add_filter( 'query_vars', 'add_query_vars' );
add_filter( 'rewrite_rules_array', 'add_rewrite_rules' );
/**
* Adiciona 'ano' e 'mes' à lista de query vars registradas
*
* @param $vars array
* @return array
*/
function add_query_vars( $vars )
{
array_push( $vars, 'ano', 'mes' );
return $vars;
}
/**
* Adiciona a regra de rewrite ao banco de dados
*
* @param $rules array
* @return array
*/
function add_rewrite_rules( $rules )
{
$new_rules = array_merge( $rules, array(
'eventos/(.+?)/(.+?)/?$' => 'index.php?pagename=eventos&ano=$matches[1]&mes=$matches[2]'
));
return $new_rules;
}
Another implementation can be seen Receiving a parameter through a friendly URL in a Wordpress page
Why use a plugin? See: Where to put my code: plugin or functions.php?