Y a-t-il une page quelque part qui détaille exactement comment WordPress génère des slugs pour les URL? J'écris un script qui doit générer des slugs d'URL identiques à ceux générés par WordPress.
Au départ, je ne peux pas vous donner une page / tutoriel / documentation sur la façon dont les slugs WP sont générés, mais jetez un œil à la sanitize_title()fonction.
Ne vous méprenez pas sur le nom de la fonction, il n'est pas destiné à assainir un titre pour une utilisation ultérieure en tant que titre de page / article . Il prend une chaîne de titre et la renvoie pour être utilisée dans une URL:
supprime HTML et PHP
dépouille les caractères spéciaux
convertit tous les caractères en minuscules
remplace les espaces, les traits de soulignement et les points par des tirets / tirets
réduit plusieurs tirets consécutifs à un
Il peut y avoir des cas marginaux où le noyau fait quelque chose de plus (vous devez regarder la source pour vérifier que sanitize_title()cela suffira toujours pour générer exactement la même chose que vous attendez), mais cela devrait couvrir au moins 99%, sinon la totalité, des cas .
@kaiser: Je pensais que vous êtes simplement amoureux de T5 Rewrite :) (qui est à mon agenda pour vérifier) | et généralement: si un titre est vraiment long, WP coupe également les limaces à une certaine longueur maximale. C'est l'un de ces cas où je ne suis pas tout à fait sûr de savoir si cela est également fait par le sanitize_titlefiltre appliqué dans la fonction, ou s'il est géré par autre chose après l'exécution de la fonction.
Johannes Pille
Je suppose que c'est le sanitize_titlefiltre que l'on doit vérifier. Mais il existe également d'autres fonctions connexes . Je n'en ai vraiment aucune idée. Parfois, il semble SimplePieplus facile à comprendre que la WP_Rewritechose. Btw: Toscho travaille sur l'intégration de la fonctionnalité "Monkeyman Rewrite Analyzer" dans son plugin. C'est là que les choses commencent à devenir vraiment intéressantes.
kaiser
1
Pensez également à sanitize_title_with_dashes () si vous voulez être un peu plus explicite sur la génération d'un slug compatible URL.
Tom Auger
5
Vous pouvez utiliser cette fonction:
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;}
C'est exactement le fonctionnement de la fonction de nettoyage d'url wp.
Il n'y a pas de mode développeur intégré à WordPress à part WP_DEBUG, ce qui ne vous aide pas trop dans ce cas. Fondamentalement, WP utilise l ' "API de réécriture" , qui est un wrapper de bas niveau basé sur une fonction pour la WP_Rewriteclasse, que vous pouvez lire dans Codex . L' global $wp_rewriteobjet est à votre service pour l'inspecter ou interagir avec la classe.
Le plug-in "Monkeyman" ajoute une nouvelle page, déposée dans le menu de l'interface d'administration sous Outils . Le plug-in "T5 Rewrite" ajoute un nouvel onglet d'aide à la page Paramètres > Permaliens . Mon extension ajoute également les onglets d'aide à la page Outils mentionnée .
Voici une capture d'écran de ce à quoi ressemble le contenu de l'onglet d'aide des plugins "T5 Rewrite".
Le plug-in "T5 Rewrite" fait un excellent travail en vous aidant à inspecter l'objet de réécriture. Et il fait encore plus: il ajoute de nouvelles possibilités. Par conséquent, cela fait (au moins dans mes installations) une partie de mon package de plugins de base.
Le premier utilise le savemode, où les balises HTML et PHP sont supprimées et les accents sont supprimés (les caractères accentués sont remplacés par des équivalents non accentués).
Le deuxième querymode garantit que tous les espaces sont remplacés par des tirets -et autres signes de ponctuation supprimés.
Réponses:
Au départ, je ne peux pas vous donner une page / tutoriel / documentation sur la façon dont les slugs WP sont générés, mais jetez un œil à la
sanitize_title()
fonction.Ne vous méprenez pas sur le nom de la fonction, il n'est pas destiné à assainir un titre pour une utilisation ultérieure en tant que titre de page / article . Il prend une chaîne de titre et la renvoie pour être utilisée dans une URL:
Il peut y avoir des cas marginaux où le noyau fait quelque chose de plus (vous devez regarder la source pour vérifier que
sanitize_title()
cela suffira toujours pour générer exactement la même chose que vous attendez), mais cela devrait couvrir au moins 99%, sinon la totalité, des cas .la source
sanitize_title
filtre appliqué dans la fonction, ou s'il est géré par autre chose après l'exécution de la fonction.sanitize_title
filtre que l'on doit vérifier. Mais il existe également d'autres fonctions connexes . Je n'en ai vraiment aucune idée. Parfois, il sembleSimplePie
plus facile à comprendre que laWP_Rewrite
chose. Btw: Toscho travaille sur l'intégration de la fonctionnalité "Monkeyman Rewrite Analyzer" dans son plugin. C'est là que les choses commencent à devenir vraiment intéressantes.Vous pouvez utiliser cette fonction:
C'est exactement le fonctionnement de la fonction de nettoyage d'url wp.
la source
Un cœur à votre service
Il n'y a pas de mode développeur intégré à WordPress à part
WP_DEBUG
, ce qui ne vous aide pas trop dans ce cas. Fondamentalement, WP utilise l ' "API de réécriture" , qui est un wrapper de bas niveau basé sur une fonction pour laWP_Rewrite
classe, que vous pouvez lire dans Codex . L'global $wp_rewrite
objet est à votre service pour l'inspecter ou interagir avec la classe.Plugins qui aident à le regarder.
Toschos "T5 Rewrite" -Plugin et Jan Fabrys "Monkeyman Rewrite Analyzer" -Plugin vous guideront votre chemin. J'ai écrit une petite extension pour "T5 Rewrite" pour l'intégrer facilement avec le "Monkeyman Rewrite Analyzer", que vous pouvez trouver dans le wikie de repos "T5 Rewrite" ici sur GitHub .
Le plug-in "Monkeyman" ajoute une nouvelle page, déposée dans le menu de l'interface d'administration sous Outils . Le plug-in "T5 Rewrite" ajoute un nouvel onglet d'aide à la page Paramètres > Permaliens . Mon extension ajoute également les onglets d'aide à la page Outils mentionnée .
Voici une capture d'écran de ce à quoi ressemble le contenu de l'onglet d'aide des plugins "T5 Rewrite".
Vorlage = Motif | Beschreibung = Explication | Beispiele = Exemples
Remarques
Le plug-in "T5 Rewrite" fait un excellent travail en vous aidant à inspecter l'objet de réécriture. Et il fait encore plus: il ajoute de nouvelles possibilités. Par conséquent, cela fait (au moins dans mes installations) une partie de mon package de plugins de base.
la source
En fait, si vous regardez la fonction principale wp_insert_post (post.php), vous verrez qu'elle fait ce qui suit:
L'essentiel à noter est qu'il utilise à la fois wp_unique_post_slug et sanitize_title:
la source
Pardonnez d'avoir repris une vieille question, mais j'avais la même nécessité que de découvrir que cette méthode fonctionne parfaitement pour moi:
Cette méthode utilise une double désinfection.
Le premier utilise le
save
mode, où les balises HTML et PHP sont supprimées et les accents sont supprimés (les caractères accentués sont remplacés par des équivalents non accentués).Le deuxième
query
mode garantit que tous les espaces sont remplacés par des tirets-
et autres signes de ponctuation supprimés.J'espère que cela aide quelqu'un! :)
la source