Pasar parámetros por URL en WordPress con URLs amigables
Creé un shortcode así:
function test_func( $atts ) {
// Retorna el parámetro GET
return $_GET['myvar'];
}
add_shortcode( 'test', 'test_func' );
y una página con el nombre "myparameters"
Así queda la URL final:
http://website.com/myparameters
Si pruebo esto funciona perfectamente:
http://website.com/myparameters/?myvar=elparametro
Pero me gustaría tener una URL bonita o amigable así:
http://website.com/myparameters/elparametro/
Pero muestra página no encontrada (404).
Probé algunos tutoriales como este enlace pero no funcionó.

el ejemplo de enlace @milo son solo las respuestas que necesitamos usar global $wp; para obtener el valor así $wp->query_vars['myvar'];

Este es el ejemplo completo, funciona muy bien con un parámetro, solo cambia el id por el de tu página.
function bartag_func( $atts ) {
global $wp;
$view = $wp->query_vars['jp_stn'];
return $view;
}
add_shortcode( 'bartag', 'bartag_func' );
function cdl_rewrite_rule(){
add_rewrite_rule(
'pronosticador/([-a-z]+)/?$',
'index.php?page_id=52&jp_stn=$matches[1]',
'top'
);
}
add_action( 'init', 'cdl_rewrite_rule' );
function cdl_query_vars( $query_vars ){
$query_vars[] = 'jp_stn';
return $query_vars;
}
add_filter( 'query_vars', 'cdl_query_vars' );

@Milo ¿Qué opinas sobre esto? Es la forma correcta de obtener el valor con URLs amigables

@kromosome ¿Qué opinas sobre esto? Es la forma correcta de obtener el valor con URLs amigables

Para lograr URLs bonitas con parámetros en WordPress, puedes utilizar las reglas de reescritura proporcionadas por WordPress junto con un endpoint personalizado o una regla de reescritura.
necesitas registrar una regla de rewrite
personalizada para manejar la URL bonita. Agrega el siguiente código al archivo functions.php
de tu tema
function custom_rewrite_rule() {
add_rewrite_rule('^misparametros/([^/]+)/?', 'index.php?pagename=misparametros&mivariable=$matches[1]', 'top');
}
add_action('init', 'custom_rewrite_rule', 10);
function custom_query_vars($query_vars) {
$query_vars[] = 'mivariable';
return $query_vars;
}
add_filter('query_vars', 'custom_query_vars', 10, 1);
Después de agregar la regla de reescritura, necesitas actualizar las reglas de reescritura para que WordPress reconozca la nueva regla. Puedes hacer esto visitando la página "Ajustes" > "Enlaces permanentes"
en el área de administración de WordPress
Actualiza tu función de shortcode para obtener el valor de mivariable
de las variables de consulta en lugar de $_GET
function test_func($atts) {
$mivariable = get_query_var('mivariable');
return $mivariable;
}
add_shortcode('test', 'test_func');
