¿Cómo agrego una regla de redirección a Wordpress?

4

En este momento, puedo generar dinámicamente js y css, según mis opciones de tema

Para hacer eso, configuro una var de consulta, que si está presente redirige a un archivo php, que luego se carga como un archivo javascript. Después de lo cual, luego toma el jqpostID y toma todas las opciones que necesito para generar mis js.

Básicamente, tengo que incluir un enlace de script que haga referencia a una parte de la ubicación de mi html enlace

Me gustaría hacerlo más legible y menos aparente que se está generando dinámicamente. tal vez así ...

enlace

Supongo que esto incluso sería mejor ... enlace

Me imagino que tengo que engancharme al motor de reescritura de wordpress de alguna manera. Y añada una nueva regla. Cualquier ayuda, o referencias a otros artículos serían geniales, o algún código de ejemplo sería asombroso.

    
pregunta Wok 07.04.2011 - 21:21

1 respuesta

6

agregar estas funciones debería hacer el truco.

Lo primero es lo primero, agrega esta línea a functions.php mientras estás trabajando en esto:

add_action('init', 'flush_rewrite_rules');

Lo que hará ese código es limpiar constantemente las reglas de reescritura, hace que esto sea más fácil de probar mientras estás trabajando en él, en lugar de tener que ingresar y restablecerlas manualmente después de cada pequeño cambio que realices en las reglas de reescritura. ASEGÚRATE de eliminar esto cuando hayas terminado y satisfecho de que todo está funcionando.

A continuación, esta función creará las reglas de reescritura que quieras.

function custom_add_rewrite_rules( $wp_rewrite ) {
    $new_rules = array( 
        'dynamic/js/(\d+).js' => 'index.php?dynamic=js&jqpostid=' . $wp_rewrite->preg_index(1),
        'dynamic/css/(\d+).css' => 'index.php?dynamic=css&csspostid=' . $wp_rewrite->preg_index(1)
    );
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'custom_add_rewrite_rules');

Tomé una idea de lo que tal vez se vería también la regla de CSS, es posible que tengas que ajustarlo a tus necesidades, simplemente pensé que se formatearía de una manera similar a la que describiste para el javascript. Esto puede causar algún comportamiento extraño cuando intenta volver a escribir la URL en una extensión de archivo y puede que no funcione en absoluto. En ese caso, simplemente elimine los archivos .js y .css del final de la primera parte de las entradas de la matriz asociativa.

function custom_add_rewrite_rules( $wp_rewrite ) {
    $new_rules = array( 
        'dynamic/js/(\d+)' => 'index.php?dynamic=js&jqpostid=' . $wp_rewrite->preg_index(1),
        'dynamic/css/(\d+)' => 'index.php?dynamic=css&csspostid=' . $wp_rewrite->preg_index(1)
    );
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'custom_add_rewrite_rules');

Básicamente, todo lo que hace es configurar la URL a buscar y la cadena que ejecuta en su lugar. La primera parte de la entrada de la matriz tiene una expresión regular que busca solo números, la parte entre paréntesis. (esto se puede ajustar para buscar un número específico de dígitos, si es necesario) La coincidencia de los cuales se pasa a la segunda parte de la entrada de la matriz como lo que se devolverá en la cadena.

Espero que esto te ayude, no dudes en contactarme si tienes algún problema.

    
respondido por el Drew Gourley 07.04.2011 - 22:56

Lea otras preguntas en las etiquetas