2012-07-03 8 views
5

Soy un desarrollador de PHP y actualmente estoy desarrollando un sistema de CMS/blog. Quiero agregar un sistema de enlace permanente como WordPress. Tengo curiosidad sobre cómo WordPress analiza el enlace permanente. Por ejemplo, la forma de obtener los datos como id y post name de:¿Cómo funciona el sistema de enlace permanente de WordPress?

example.com/id/123/post/example/ 

En resumen, quiero un sistema para obtener id y post name de la URL. Quiero que los usuarios puedan cambiar la estructura de enlaces permanentes como WordPress usando etiquetas como:

id/%postid%/post/%postname%/ 

¿Cómo puedo obtener los datos en variables como $id y $post_name donde los valores se 123 y example? Por favor, ayúdame. Gracias de antemano.

Respuesta

0

Esto depende del software de servidor que esté utilizando, pero si planea utilizar sus scripts en Apache, generalmente implica usar algo llamado mod_rewrite y específicamente un archivo .htaccess.

Recomiendo comenzar leyendo un tutorial sobre este tema. As usual, Google is your friend.

5

El módulo apache comúnmente disponible mod_rewrite puede ayudarlo con esto. Lo que hace es escribir reglas de reescritura dentro de un archivo .htaccess y, a través de la reescritura, se envían estructuras sofisticadas que normalmente se asemejarían a un sistema de archivos a un archivo PHP como parámetros $ _GET.

Por ejemplo, si desea reemplazar algo como: ?reactor=13 en /reactor/13/

escribir esta regla de reescritura en el archivo .htaccess:

RewriteEngine on 
RewriteRule reactor/([0-9]+)/$ index.php?id=$1 

Ahora, si en lugar de index.php que tire hacia arriba/reactor/13 /, su archivo index.php debe ver esto en $ _GET:

Array 
(
    [id] => 13 
) 

Ahora, para obtener el código HTML, le toca a usted para elaborar un URL obedezca su estructura pensada.

Estas reglas de reescritura pueden ser confusas, pero siguen un patrón de expresiones regulares lógico.

WordPress adopta un enfoque más fuerte que la inserción de estos archivos de edición .htaccess, a donde envían todo a WP, y luego WP resuelve/enruta el resto a través de reglas internas.

+0

¿Dónde en la fuente de WP procesa los enlaces? Estoy seguro de que tienes razón (las reglas mod_rewrite creadas son muy simples/genéricas), pero si pudiera ver dónde se supone que sucederá esto me ayudaría a diagnosticar un problema extraño que estoy teniendo. – iX3

+1

WP es en realidad demasiado enrevesado o abstraído para apuntar a un solo lugar. Puede ver esto mirando https://github.com/WordPress/WordPress/search?q=permalink_structure&source=cc – pp19dd

Cuestiones relacionadas