Tengo los enlaces en mi sitio que pasar consultas a páginas de consulta de una base de datos externa. Esto funciona bien por ejemplo,

mysite.com/catalog/?tl=flooring

sin embargo quiero volver a escribir esta url para que aparezca como

mysite.com/catalog/flooring

He intentado modificar las reglas de reescritura de wordpress, pero siempre se muestra la página de índice

add_filter('rewrite_rules_array','wp_insertMyRewriteRules');
add_filter('query_vars','wp_insertMyRewriteQueryVars');
add_filter('init','flushRules');

//Remember to flush_rules() when adding rules
function flushRules(){
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}

//Adding a new rule
function wp_insertMyRewriteRules($rules)
{
    $newrules = array();
    $newrules['(catalog)/([a-zA-Z0-9 ]+)$'] = '/catalog/?tl=$matches[2]';
    return $newrules + $rules;
}

//Adding the id var so that WP recognizes it
function wp_insertMyRewriteQueryVars($vars)
{
    array_push($vars, 'id');
    return $vars;
}
InformationsquelleAutor user398894 | 2010-07-22

2 Comentarios

  1. 8

    Las reglas de reescritura en WordPress no acaba de funcionar como cómo usted está esperando que ellos. Todas las reglas de reescritura de mapa a un archivo de controlador (casi siempre index.php), no a otra URL.

    Aquí es un extracto de código de ejemplo;

    $rules['catalog/(.*)/?'] = 'index.php?pagename=catalog&tl=$matches[1]';
    array_push($query_vars, 'tl'); //note query var should match your query string

    Este sería el mapa catalog/whatever a la página WordPress ‘catálogo’, y pasar a lo largo de la consulta var ‘tl’. Se podría crear una plantilla de página para ‘catálogo’, a continuación, recoger el valor de ‘tl’ utilizando get_query_var('tl').

    También evitar el uso de la consulta vars como id usar algo más exclusivo (como ‘tl’) para evitar enfrentamientos con WordPress.

    Y no ras reglas en cada init! Es una mala práctica, y escribo .htaccess y llamar a la base de datos de actualizaciones en cada la carga de la página!

    WordPress siempre a ras permalinks cada vez que se actualiza un post o su estructura de permalink (simplemente actualizar tus permalinks cuando se realizan cambios en el código).

    • sería posible que se redirija a una página secundaria? He puesto el postname en pagename, pero en realidad es la reorientación de la página.
    • Si es un niño de página, pagename debe ser el slug path – por ejemplo pagename=parentname/childname
  2. 2

    Este artículo más en Raazorlight va a un poco más de detalle en el proceso de acaparamiento de las cadenas de consulta y la reescritura de URL en la nota WP.

    También, revisar los comentarios para ver por qué una llamada flushRules() puede no ser necesario si usted volver a guardar permalinks. Opcionalmente, flushRules() puede ser llamado solo una vez durante el plugin de activación de devolución de llamada.

    A cavar más profundo, comentarista ‘pmdci’ que enlaza a través de un instructivo post/saga sobre el tema relacionado de pasar una consulta a un tipo de mensaje personalizado utilizando una taxonomía personalizada.

Dejar respuesta

Please enter your comment!
Please enter your name here