¿Cómo crear rutas URL personalizadas?

42

Tengo un requisito muy peculiar, espero poder explicarlo sin ser demasiado confuso. Creé una plantilla de página donde enumero algunas de las propiedades que obtengo de un archivo XML externo, hasta ahora no hay problemas, digamos que la URL es así: enlace

Cada propiedad tiene un enlace que debería redirigir al usuario a una página de "Propiedad única" que muestra más información al respecto, lo que me preguntaba es si hay una manera de hacer que el enlace sea el siguiente enlace ? Donde "123" sería el ID de la propiedad, básicamente, si tengo la url como propiedades / some_id, quiero poder cargar un archivo de vista (como los archivos single.php o page.php) pero específico para esta condición de url .

¿Es esto posible? Gracias de antemano!

    
pregunta Javier Villanueva 20.08.2011 - 00:24

2 respuestas

50

Agregue esto a functions.php de su tema, o póngalo en un complemento .

add_action( 'init', 'wpse26388_rewrites_init' );
function wpse26388_rewrites_init(){
    add_rewrite_rule(
        'properties/([0-9]+)/?$',
        'index.php?pagename=properties&property_id=$matches[1]',
        'top' );
}

add_filter( 'query_vars', 'wpse26388_query_vars' );
function wpse26388_query_vars( $query_vars ){
    $query_vars[] = 'property_id';
    return $query_vars;
}

Esto agrega una regla de reescritura que dirige las solicitudes a /properties/ con cualquier combinación de números siguiendo a pagename properties , con la consulta var property_id establecida. Solo asegúrate de visitar la página de configuración de enlaces permanentes y guardar para borrar las reglas de reescritura, por lo que esta nueva regla se incluirá.

En su plantilla page-properties.php , get_query_var('property_id') devolverá el ID de propiedad si se configuró, si no se muestra la página de propiedades predeterminada.

    
respondido por el Milo 20.08.2011 - 01:44
8

Otra forma de hacerlo:

add_action('init', function() {
    add_rewrite_rule( '^properties/([0-9]+)/?',
                      'index.php?pagename=properties&property_id=$matches[1]',
                      'top' );
}, 10, 0);

add_action('init', function() {
    add_rewrite_tag( '%property_id%', '([^&]+)' );
}, 10, 0);

API de reescritura de Codex / agregar regla de reescritura

Codex Rewrite API / add rewrite tag

    
respondido por el Christian Lescuyer 21.05.2017 - 11:24

Lea otras preguntas en las etiquetas