¿Hay alguna página en algún lugar que detalle exactamente cómo WordPress genera babosas para URL? Estoy escribiendo un script que necesita generar slugs de URL idénticos a los que genera WordPress.
De buenas a primeras, no puedo darle una página / tutorial / documentación sobre cómo se generan las babosas de WP, pero eche un vistazo a la sanitize_title()función.
No tener una impresión equivocada por el nombre de la función, es no significaba para desinfectar un título para el uso más como una página / título de la entrada . Toma una cadena de título y la devuelve para usarla en una URL:
tiras HTML y PHP
tiras de caracteres especiales
convierte todos los caracteres en minúsculas
reemplaza espacios en blanco, guiones bajos y puntos por guiones / guiones
reduce múltiples guiones consecutivos a uno
No puede haber casos en los bordes, donde el núcleo hace algo adicional (que tendría que mirar a la fuente para verificar que sanitize_title()se siempre suficiente en la generación de exactamente la misma que espera), pero esto se debe cubrir al menos el 99%, si no todos, los casos .
@kaiser: pensé que simplemente estabas enamorado de T5 Rewrite :) (que está en mi agenda para ver) | y en general: si un título es realmente largo, WP también recorta las babosas hasta una cierta longitud máxima. Ese es uno de esos casos en los que no estoy completamente seguro de si eso también lo hace el sanitize_titlefiltro aplicado en la función, o si eso es manejado por otra cosa después de que la función se haya ejecutado.
Johannes Pille
Supongo que es el sanitize_titlefiltro que hay que revisar. Pero también hay otras funciones relacionadas . Realmente no tengo idea de esto. A veces parece que SimplePiees más fácil de entender que la WP_Rewritecosa. Por cierto: Toscho trabaja en la integración de la funcionalidad "Monkeyman Rewrite Analyzer" en su complemento. Ahí es donde las cosas comienzan a ponerse realmente interesantes.
kaiser
1
Considere también sanitize_title_with_dashes () si desea ser un poco más explícito sobre la generación de una babosa compatible con URL.
Tom Auger
5
Puedes usar esta función:
staticpublicfunction slugify($text){// replace non letter or digits by -
$text = preg_replace('~[^\pL\d]+~u','-', $text);// transliterate
$text = iconv('utf-8','us-ascii//TRANSLIT', $text);// remove unwanted characters
$text = preg_replace('~[^-\w]+~','', $text);// trim
$text = trim($text,'-');// remove duplicate -
$text = preg_replace('~-+~','-', $text);// lowercase
$text = strtolower($text);if(empty($text)){return'n-a';}return $text;}
Es exactamente cómo funciona la función wp url sanitize.
No hay un modo de desarrollador integrado en WordPress aparte WP_DEBUG, lo que no te ayuda demasiado en este caso. Básicamente, WP utiliza la "API de reescritura" , que es un contenedor de bajo nivel basado en funciones para la WP_Rewriteclase, sobre el que puede leer en el Codex . El global $wp_rewriteobjeto está a su servicio para inspeccionarlo o interactuar con la clase.
El complemento "Monkeyman" agrega una nueva página, archivada en el menú de la interfaz de usuario del administrador en Herramientas . El complemento "Reescribir T5" agrega una nueva pestaña de ayuda a la página Configuración > Enlaces permanentes . Mi extensión también agrega las pestañas de ayuda a la página de herramientas mencionada .
Aquí hay una captura de pantalla de cómo se ve el contenido de la pestaña de ayuda "T5 Rewrite".
El complemento "T5 Rewrite" hace un trabajo maravilloso al ayudarlo a inspeccionar el objeto de reescritura. Y lo hace aún más: agrega nuevas posibilidades. Por lo tanto, es (al menos en mis instalaciones) parte de mi paquete básico de complementos.
El primero usa el save modo, donde se eliminan las etiquetas HTML y PHP, y se eliminan los acentos (los caracteres acentuados se reemplazan por equivalentes no acentuados).
El segundo querymodo garantiza que todos los espacios se reemplacen con guiones.- y se eliminen otros signos de puntuación.
Respuestas:
De buenas a primeras, no puedo darle una página / tutorial / documentación sobre cómo se generan las babosas de WP, pero eche un vistazo a la
sanitize_title()
función.No tener una impresión equivocada por el nombre de la función, es no significaba para desinfectar un título para el uso más como una página / título de la entrada . Toma una cadena de título y la devuelve para usarla en una URL:
No puede haber casos en los bordes, donde el núcleo hace algo adicional (que tendría que mirar a la fuente para verificar que
sanitize_title()
se siempre suficiente en la generación de exactamente la misma que espera), pero esto se debe cubrir al menos el 99%, si no todos, los casos .fuente
sanitize_title
filtro aplicado en la función, o si eso es manejado por otra cosa después de que la función se haya ejecutado.sanitize_title
filtro que hay que revisar. Pero también hay otras funciones relacionadas . Realmente no tengo idea de esto. A veces parece queSimplePie
es más fácil de entender que laWP_Rewrite
cosa. Por cierto: Toscho trabaja en la integración de la funcionalidad "Monkeyman Rewrite Analyzer" en su complemento. Ahí es donde las cosas comienzan a ponerse realmente interesantes.Puedes usar esta función:
Es exactamente cómo funciona la función wp url sanitize.
fuente
Core a su servicio
No hay un modo de desarrollador integrado en WordPress aparte
WP_DEBUG
, lo que no te ayuda demasiado en este caso. Básicamente, WP utiliza la "API de reescritura" , que es un contenedor de bajo nivel basado en funciones para laWP_Rewrite
clase, sobre el que puede leer en el Codex . Elglobal $wp_rewrite
objeto está a su servicio para inspeccionarlo o interactuar con la clase.Complementos que ayudan a investigarlo.
Toschos "T5 Rewrite" -Plugin y Jan Fabrys "Monkeyman Rewrite Analyzer" -Plugin lo guiarán en su camino. He escrito una pequeña extensión para "T5 Rewrite" para integrarlo sin problemas con el "Monkeyman Rewrite Analyzer", que puedes encontrar en la wikie de repositorios "T5 Rewrite" aquí en GitHub .
El complemento "Monkeyman" agrega una nueva página, archivada en el menú de la interfaz de usuario del administrador en Herramientas . El complemento "Reescribir T5" agrega una nueva pestaña de ayuda a la página Configuración > Enlaces permanentes . Mi extensión también agrega las pestañas de ayuda a la página de herramientas mencionada .
Aquí hay una captura de pantalla de cómo se ve el contenido de la pestaña de ayuda "T5 Rewrite".
Vorlage = Patrón | Beschreibung = Explicación | Beispiele = Ejemplos
Notas
El complemento "T5 Rewrite" hace un trabajo maravilloso al ayudarlo a inspeccionar el objeto de reescritura. Y lo hace aún más: agrega nuevas posibilidades. Por lo tanto, es (al menos en mis instalaciones) parte de mi paquete básico de complementos.
fuente
En realidad, si observa la función principal wp_insert_post (post.php), verá que hace lo siguiente:
La clave a tener en cuenta es que usa wp_unique_post_slug y sanitize_title:
fuente
Perdone por reanudar una vieja pregunta, pero tuve la misma necesidad que descubrí que este método funciona perfectamente para mí:
Este método utiliza una doble desinfección.
El primero usa el
save
modo, donde se eliminan las etiquetas HTML y PHP, y se eliminan los acentos (los caracteres acentuados se reemplazan por equivalentes no acentuados).El segundo
query
modo garantiza que todos los espacios se reemplacen con guiones.-
y se eliminen otros signos de puntuación.¡Espero que esto ayude a alguien! :)
fuente