La API de reescritura de WordPress

WordPress tiene una API realmente útil llamada “el reescribir API“. Supongo que eso ya tiene de “reescritura de URL”, este es el proceso que hace que las URL sean más legibles. Por ejemplo, una URL escrita como esta http://mysite.com/?page=12&category=12&author=47 no es tan atractiva. Es difícil recordarlo, y a los motores de búsqueda no les gusta tanto. Es por eso que casi todos los CMS tienen una función integrada que “reescribe” las URL para que se vean así: http://mysite.com/category/business/finance.


La API de reescritura y la clase WP_Rewrite

Dentro de WordPress, este proceso también se conoce como estructura de enlaces permanentes. Cuando cambia de la estructura de enlace permanente predeterminada a una estructura personalizada, activa automáticamente la API de reescritura. Esto es completamente automático. Pero a veces necesitas crear tus propias reglas de reescritura personalizadas.

En esta publicación, vamos a crear funciones simples para crear una regla de reescritura personalizada simple. Supongamos que queremos obtener un valor de referencia, más o menos equivalente a $ _GET [‘referencia’].

Si echamos un vistazo al Codex, podemos ver en la página API de reescritura que esta API tiene 6 funciones integradas. El uso más común de la reescritura es usar estas funciones, hay muchos tutoriales sobre eso, por eso voy a usar filtros en lugar de funciones. ¡Porque sí, la API de reescritura también se puede usar con filtros! Esos filtros se enumeran en el Clase WP_Rewrite Página del Codex.

Agregar una nueva consulta Var

Para comenzar, necesitamos crear una función que le diga a WordPress que se establece una nueva regla de reescritura. Este es el trabajo del add_rewrite_rule ()add_rewrite_tag ()  funciones, pero también puedes hacerlo usando query_vars y rewrite_rules_array filtros Para hacerlo, necesitamos crear dos funciones y dos filtros. La primera función simplemente agregará una nueva variable al filtro query_vars, y la segunda registrará esta nueva variable en las reglas globales de reescritura:

/ *
El |--------------------------------------------------------------------------
El | Comience a reescribir. Muestra: http://mysite.com/referrer/remi
El |--------------------------------------------------------------------------
* /

// Registrar una nueva var
función rc_add_query_vars ($ vars) {
$ vars [] = "referente"; // nombre de la var como se ve en la URL
devolver $ vars;
}

// Engancha nuestra función en query_vars
add_filter ('query_vars', 'rc_add_query_vars');

// Agregar la nueva regla de reescritura a las existentes
función rc_add_rewrite_rules ($ reglas) {
$ new_rules = array ('referrer / ([^ /] +) /? $' => 'index.php? referrer = $ coincide [1]');
$ reglas = $ nuevas_reglas + $ reglas;
devolver $ reglas;
}

// Engancha la función en rewrite_rules_array
add_filter ('rewrite_rules_array', 'rc_add_rewrite_rules');

Una vez que agregue este código a cualquiera de su archivo de complemento o su archivo de funciones de tema.php, vaya a configuración> Enlaces permanentes y guarde la estructura de enlaces permanentes. Esta acción es necesaria. Ahora debería poder acceder a su sitio con este tipo o url: http://mysite.com/referrer/your-name. Si desea ser redirigido en una página específica, cambie index.php? Referrer = $ coincide [1] por index.php? Pagename = my-page & referrer = $ coincide [1] donde “mi-página” es la página redirigido a babosa.

Recuperando el valor de la variable

Ahora que su regla de reescritura está establecida, es posible que desee acceder al valor de la variable. Pero si hace un simple $ _GET [‘referidor’], no obtendrá ningún valor. Para recuperar los valores de URL vars, debe conectar una función al filtro “template_redirect”. Enganchar al filtro “init” es demasiado temprano. Luego puede acceder a las variables necesarias a través del objeto $ wp_query. Aquí hay una muestra rápida de cómo hacerlo:

// Recuperar URL var
función rc_get_my_vars () {
global $ wp_query;

if (isset ($ wp_query-> query_vars ['referrer'])) {
$ referrer = get_query_var ('referrer');
}
}

// Engancha la función en template_redirect
add_action ('template_redirect', 'rc_get_my_vars');

A continuación, puede hacer eco del valor de $ referrer o usarlo como lo hubiera hecho con una variable GET normal.

Por supuesto, puede modificar el uso de más de una variable:

// en rc_add_query_vars ()
$ vars [] = "referente";
$ vars [] = "campaña";

// en rc_add_rewrite_rules ()
$ new_rules = array ('referrer / ([^ /] +) / ([^ /] +) /? $' => 'index.php? pagename = my-page & referrer = $ coincide [1] & campaign = $ coincide [ 2] ');

No olvides que necesitas habilitar el módulo PHP mod_rewrite para usar la reescritura de URL.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me