Página principal » WordPress » Reescribiendo URLs en WordPress Tips y Plugins

    Reescribiendo URLs en WordPress Tips y Plugins

    Las actualizaciones más recientes de WordPress han permitido a los desarrolladores personalizar su sitio web personal muy rápidamente. Es sencillo actualizar áreas de su tema, reemplazar widgets en la barra lateral e incluso escribir sus propias funciones de código PHP personalizadas. La extensión es enorme, y un área de popularidad es reescribir los enlaces permanentes de URL bonitos.

    Hay algunos métodos que puede utilizar para actualizar el sistema de reescritura de WordPress predeterminado. En este tutorial compartiré algunos ejemplos y demostraré lo sencillo que puede ser el proceso. Necesitará cierta comprensión de PHP para seguir lo que está pasando en el código, pero es muy fácil de copiar y pegar en su propia plantilla, prácticamente no hay trabajo involucrado.

    Entendiendo WP_Rewrite

    Si está familiarizado con mod_rewrite en los servidores de Apache, retomará la sintaxis de reescritura de WordPress. Su sistema todavía está construido sobre una .htaccess Archivo, pero todas las reglas están codificadas en PHP. Esto hace que el proceso sea un poco más fácil ya que tenemos más control sobre la escritura de nuestras propias URL..

    Recomiendo hojear la página de la clase $ wp_rewrite, ya que tiene toneladas de información sobre el tema. Incluso hay ejemplos pequeños a los que podemos hacer referencia para que todo sea más fácil de entender. La mayoría del código puede escribirse directamente en el tema funciones.php expediente. Comencemos observando las reescrituras predeterminadas que ya se incluyen con WordPress.

    Contenido de $ wp_rewrite-> rules

    Declarando el $ wp_rewrite Clase como global tenemos acceso a todos los datos internos. Cuando vaya a agregar sus propias reglas, éstas se agregarán a una matriz con el nombre $ wp_rewrite-> reglas. Es importante recordar esta variable ya que probablemente necesitará hacer referencia a los datos muchas veces durante el desarrollo.

    reglas); ?>

    Agregué este bloque de código en mi tema page.php expediente. Producirá una gran variedad de datos que parecen un gran desorden. Pero si tu Ver fuente en su página es realmente fácil ver qué reglas de reescritura coinciden con qué nombre de archivo. Por ejemplo, veamos las reglas para las reescrituras de categorías:

    [category /(.+?)/?$] => index.php? category_name = $ coincidencias [1] 

    La broca en el lado izquierdo entre paréntesis es nuestra Apache RewriteRule para buscar. A partir de la sección /categoría/ seguido de cualquier cadena de caracteres. Si esto coincide, entonces el servidor sabe hacer referencia. index.php? category_name = Mientras reemplaza la variable al final.

    Configuración de enlaces permanentes personalizados

    Hay mucho contenido para repasar solo en la clase $ wp_rewrite. Muchas otras propiedades pueden ser referenciadas, tales como $ wp_rewrite-> category_base o $ wp_rewrite-> author_base para tirar de las estructuras de URL por defecto para estas páginas. Pero además de eliminar la configuración predeterminada de WP, también podemos crear nuestras propias reglas..

    Reconstruyendo la Base de Autor

    Cuando ingresa a la página de configuración de Permalinks, tiene la opción de restablecer las bases de categorías y etiquetas. Sin embargo, la opción para restablecer su base de autor está extrañamente perdida.

    Pero podemos usar la add_rewrite_rule () del codex de WordPress para integrar algunas nuevas configuraciones. En este caso he sustituido /autor/ con /escritor/ Pero podrías usar la base que quieras. Además, he copiado algunas de las otras redirecciones para páginas de autor y fuentes RSS. Puedes agregar este bloque de código en el archivo functions.php de tu tema.

    add_action ('init', 'add_author_rules'); function add_author_rules () add_rewrite_rule ("writer / ([^ /] +) /?", "index.php? author_name = $ matches [1]", "top"); add_rewrite_rule ("writer / ([^ /] +) / page /? ([0-9] 1,) /?", "index.php? author_name = $ matches [1] & paged = $ matches [2] ", "parte superior"); add_rewrite_rule ("writer / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ coincidencias [1] & feed = $ coincidencias [2]", " parte superior"); add_rewrite_rule ("writer / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ coincidencias [1] & feed = $ coincidencias [2]" , "parte superior");  

    Se puede acceder a esta función incluso sin usar la variable $ wp_rewrite. A algunos desarrolladores les gusta este método porque es más simple que codificar de forma rígida con propiedades de clase. Sin embargo, también he notado que este método no siempre es confiable para algunas instalaciones de WordPress. En realidad, hay una segunda opción para agregar estas reglas en el gancho después de vaciar su .htaccess (ver a continuación).

    Base del autor utilizando generate_rewrite_rules

    Escribiendo para este método necesitaremos nuevamente la clase global $ wp_rewrite. Entonces he configurado una nueva variable llamada $ new_rules que contiene una matriz asociativa de datos. Mi código de ejemplo a continuación simplemente vuelve a escribir para la sección de la página de autor básica.

    function generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;  

    Pero si queremos incluir varias páginas y fuentes RSS, podemos reforzar la matriz. Tiene la opción de crear una función PHP para enviar datos de matrices asociativas que pueden ser un poco demasiado complejos. También podríamos dividir los bloques de datos a través de comas, comportándonos como entidades separadas en la matriz. Echa un vistazo a mi código actualizado de nuevo escrito en el archivo de tema functions.php.

    function generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1), "writer / ([^ /] +) / page /? ([0-9] 1,) /? "=>" Index.php? Author_name = ". $ Wp_rewrite-> preg_index (1)." & Paged = ". $ Wp_rewrite-> preg_index (2), "writer / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2), "writer / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?" => "index.php? author_name =". $ wp_rewrite- > preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;  

    Solo recuerde que ninguno de estos métodos funcionará hasta que haya eliminado las reglas de reescritura originales. Tendrá que hacer esto cada vez que realice cambios en estas funciones, pero luego sus nuevas reglas se mantendrán indefinidamente..

    Limpiando las Reglas de Reescritura

    Cada vez que realice una actualización del código de reescritura de URL, los cambios no se aplicarán de inmediato. Debe vaciar las reglas de reescritura de .htaccess para que se agregue su nuevo código. Sin embargo, realizar esto en cada inicio de página es extremadamente inútil, ya que escribe en la base de datos y actualiza el archivo .htaccess.

    Un método mejor es acceder a su página de enlaces permanentes en el panel de administración y volver a guardar los cambios. Esto siempre llama a flush_rewrite_rules para que nunca tenga que preocuparse por los usuarios en la interfaz que experimentan problemas de carga. Y solo se necesita una vez para volver a guardar la página y actualizar todas las reglas de su sistema. Pero si esto no funciona puedes intentar llamar $ wp_rewrite-> flush_rules ();

    Uso de reglas que no sean de WP

    Dentro de $ wp_rewrite Clase que tenemos acceso a decenas de propiedades. Una de las opciones más significativas es $ wp_rewrite-> non_wp_rules que recopila una serie de redirecciones que no llegan al archivo index.php.

    Esto se usa más a menudo en el desarrollo de plugins de WordPress. Puede insertar un tipo de URL personalizado específico (como / calendar / junio-2012 /) en el backend de su sitio web (/wp-content/plugins/calendarplug/myscript.php). Pero, por supuesto, hay otros usos para esta matriz asociativa de reglas de reescritura personalizadas que no sean complementos. He proporcionado un excelente ejemplo en el contexto a continuación.

    Enmascarando tus archivos de tema

    Esta es una sugerencia común que veo con frecuencia en los foros de discusión de WordPress. Idealmente, nos gustaría hacer referencia a algunos archivos dentro de la / wp-content / themes / mytheme / Carpeta con una URL más elegante. Tenga en cuenta que esto requerirá un conjunto diferente de reescrituras de WordPress para cambiar la estructura del directorio.

    El sistema interno de reescritura de WordPress siempre empuja el contenido hacia un solo archivo de enrutamiento. En el caso predeterminado, usamos index.php junto con cualquier dato de cadena de consulta adicional. Pero para esconder nuestro directorio de plantillas estándar (/ wp-content / themes / mytheme / *) tendremos que mostrar muchos archivos diferentes.

    add_action ('generate_rewrite_rules', 'themes_dir_add_rewrites'); function themes_dir_add_rewrites () $ theme_name = next (explode ('/ themes /', get_stylesheet_directory ())); global $ wp_rewrite; $ new_non_wp_rules = array ('css /(.*)' => 'wp-content / themes /'. $ theme_name. '/ css / $ 1', 'js /(.*)' => 'wp-content / themes / '. $ theme_name.' / js / $ 1 ',' images / wordpress-urls-rewrite /(.*) '=>' wp-content / themes / '. $ theme_name.' / images / wordpress-urls-rewrite / $ 1 ',); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;  

    He escrito una nueva función themes_dir_add_rewrites () para extraer todo el contenido principal de estas URL más largas y redirigirlas en el backend. Tenga en cuenta que estamos usando esta otra misteriosa propiedad de la clase $ wp_rewrite llamada non_wp_rules. De acuerdo con los documentos, estas son reglas que no se dirigen al archivo index.php de WP y se manejarán en el extremo del servidor..

    Lo que es tan bueno acerca de estas reglas que no son de WP es que aún puede administrar el antiguo método de URL con bastante facilidad. No hay nada que le impida vincularse a:

    /wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg.

    Pero se ve mucho mejor si puedes referenciar:

    /images/wordpress-urls-rewrite/logo.jpg en lugar.

    Herramientas útiles y complementos

    Hay solo unas pocas herramientas que puede utilizar si está atascado con la codificación de sus propias URL bonitas. El proceso es muy difícil de comprender, así que no te desanimes si estás luchando por un par de semanas. Siento que el contenido se hará más fácil a medida que pases más tiempo practicando.

    Pero para comenzar, echa un vistazo a algunas de estas útiles herramientas de reescritura y complementos. Es probable que no los necesite todos, pero es genial encontrar una base de desarrolladores tan grande trabajando alrededor de las reescrituras de WP.

    Analizador de reescritura Monkeyman

    Cuando salte por primera vez a las reglas de reescritura, este complemento es imprescindible. En realidad, no cambia ninguna de las reglas de su sitio web, simplemente le permite probar el código y ver qué redireccionamientos van a qué páginas. Incluso funcionará para probar variables de consulta personalizadas para cualquier tipo de publicación personalizada.

    AskApache RewriteRules Viewer

    Esto es similar al complemento anterior, excepto que no le permite probar sus propias reglas. En su lugar, este complemento mostrará todas las reglas de WP predeterminadas de su sitio web y hacia dónde se redirigen. Esto incluirá todas las propiedades principales de $ wp_rewrite como su configuración de enlace permanente y las bases de página / categoría / etiquetas.

    WP htaccess Control

    Aquí tiene un conjunto diferente de reglas para hacer nuevas redirecciones de página. El complemento tiene su propio panel de administración donde puede editar variables como su base de autores, bases de páginas e incluso agregar sus propias reglas de acceso .htaccess personalizadas.

    Este método es diferente en comparación con la construcción de su propio uso de wp_rewrite. Sin embargo, puede ser más fácil para los técnicos que realmente conocen los servidores web y se sienten más cómodos escribiendo directamente en .htaccess.

    Reescribir el probador de reglas

    Esto en realidad no es un complemento de WordPress, pero definitivamente es una herramienta útil para mantener en el archivo. Puede copiar las reglas de reescritura y probarlas para su sitio web sin tener que editar el archivo .htaccess. Este es el método perfecto para eliminar errores de su sintaxis antes de lanzar en vivo en la Web.

    DW reescribir

    DW Rewrite es un complemento muy simple que crea 3 URL bonitas únicas inmediatamente después de la instalación. Por defecto cambiará los enlaces de administración, inicio de sesión y registro a /administración, /iniciar sesión, y /registro respectivamente.

    Esto puede ser excelente si necesita una solución rápida para un blog que cuenta con varios autores. Ocultará específicamente el enlace de registro de WordPress (/wp-login.php?action=register).

    Conclusión

    Espero que este tutorial pueda proporcionar algunos ejemplos para que piense en las reescrituras de WordPress. El CMS es muy popular y los desarrolladores siguen produciendo nuevas características cada día. Personalizar sus propias URL es una gran pieza de funcionalidad basada en el usuario. Le da a su sitio web su propia presencia y marca únicas en comparación con las opciones predeterminadas.

    Si tiene problemas con las reglas de reescritura, nunca debería ser difícil deshacer el daño. Simplemente eliminando el código de función y limpiando las reglas de .htaccess, parecería que nada ha cambiado. Asegúrese de revisar otros artículos similares que pueda encontrar sobre el tema. Y si tiene preguntas o comentarios, puede compartirlos con nosotros en el área de discusión posterior..