WordPress Custom URL Rewrites

4

Estoy intentando agregar una regla de reescritura personalizada con una sola variable a una página específica. La versión 'fea' es http://example.com/used-cars/car/?carname=name-of-car y la versión 'pretty' que busco es http://example.com/used-cars/car/name-of-car .

http://example.com/used-cars/car/ es una página con una plantilla personalizada que no muestra nada si la variable carname no está establecida. Este es el código que tengo hasta ahora:

add_filter('query_vars', 'ip_add_rewrite_query_vars');
function ip_add_rewrite_query_vars($query_vars) {
    $query_vars[] = 'carname';
    return $query_vars;
}

add_action('init', 'ip_add_rewrite_rules');
function ip_add_rewrite_rules() {
    add_rewrite_rule(
        'used-cars/car/([^/]+)/?$',
        'index.php?p=403&carname=$matches[1]',
        'top'
    );
}

Con esto, cuando voy a http://example.com/used-cars/car/name-of-car , solo redirige a http://example.com/used-cars/car y get_query_var('carname') devuelve null .

He intentado un par de variaciones diferentes en formas de hacer esto (como modificar $wp_rewrite directamente, usando add_rewrite_tag() ), pero o bien obtengo el mismo resultado o un error 404. Vacío las reglas de reescritura y el caché de mi navegador cada vez que intento probar la página nuevamente. Instalé el complemento analizador de reescritura y mi reescritura aparece allí y parece correcta en comparación con las predeterminadas. Por lo que puedo ver en todos los ejemplos en la web, el código que debería funcionar (es prácticamente el mismo ejemplo que en la página de códice) y no tengo idea de por qué no funciona.

Esta es una configuración multisitio (cada sitio en un subdominio diferente). No estoy realmente familiarizado con el multisitio, pero no creo que haya nada en eso que pueda afectar las reescrituras personalizadas.

    
pregunta amandarm 04.01.2013 - 00:05

1 respuesta

1

Hago algo similar con los registros personalizados llamados tiendas y su número de identificación específico. En mi caso, quiero enlace

para cargar con la variable shop_unid que es el registro UNID. Aquí está mi función de trabajo:

//Shop page rewrites
function shop_rewrite() {
    add_rewrite_rule('^shops/([^/]*)/?','index.php?pagename=shops&shop_unid=$matches[1]','top');
    add_rewrite_tag('%shop_unid%','([^&]+)');
}
add_action('init', 'shop_rewrite');

Tenga en cuenta que usé pagename en lugar del número de publicación. Nunca se sabe si eso podría cambiar, por ejemplo, en un multisitio diferente o si exportó el sitio a un nuevo servidor, por lo que siempre evito la codificación de identificaciones de correos específicas.

Ahora en la página o en su propia función, esto debería funcionar:

global $wp_query;
$shop_unid = $wp_query->query_vars['shop_unid'];
print_r($shop_unid);
    
respondido por el Dennis Smolek 04.01.2013 - 00:46

Lea otras preguntas en las etiquetas