Gibt es irgendwo eine Seite, die genau beschreibt, wie WordPress Slugs für URLs generiert? Ich schreibe ein Skript, das URL-Slugs generiert, die mit denen von WordPress identisch sind.
Auf Anhieb kann ich Ihnen keine Seite / Anleitung / Dokumentation zur Erzeugung von WP-Slugs geben, aber werfen Sie einen Blick auf die sanitize_title()Funktion.
Verursachen Sie keinen falschen Eindruck durch den Funktionsnamen. Es ist nicht dazu gedacht, einen Titel für die weitere Verwendung als Seiten- / Beitragstitel zu bereinigen . Es wird eine Titelzeichenfolge verwendet und zur Verwendung in einer URL zurückgegeben:
Streifen HTML & PHP
Streifen spezielle Zeichen
wandelt alle Zeichen in Kleinbuchstaben um
Ersetzt Leerzeichen, Unterstriche und Punkte durch Bindestriche
Reduziert mehrere aufeinanderfolgende Striche auf einen
Es könnte Rand Fälle, in denen der Kern tut etwas zusätzliche (Sie an der Quelle aussehen müsste , um das überprüfen sanitize_title()wird immer ausreichen , bei der Erzeugung von genau den gleichen Sie erwarten), aber dies mindestens 99% abdecken sollte, wenn nicht sogar alle Fälle .
@kaiser: Ich dachte, du bist einfach verliebt in T5 Rewrite :) (was auf meiner Agenda steht, um es dir anzusehen ) | und allgemein: Wenn ein Titel wirklich lang ist, schneidet WP auch Butzen auf eine bestimmte maximale Länge. Dies ist einer der Fälle, in denen ich nicht ganz sicher bin, ob dies auch von dem sanitize_titlein der Funktion angewendeten Filter durchgeführt wird oder ob dies von etwas anderem erledigt wird, nachdem die Funktion ausgeführt wurde.
Johannes Pille
Ich denke, es ist der sanitize_titleFilter, den man auschecken muss. Es gibt aber auch andere verwandte Funktionen . Ich habe wirklich keine Ahnung davon. Manchmal scheint SimplePiees einfacher zu verstehen als das WP_RewriteDing. Btw: Toscho arbeitet daran, die "Monkeyman Rewrite Analyzer" -Funktionalität in sein Plugin zu integrieren. Dort werden die Dinge wirklich interessant.
Abgesehen von WordPress gibt es keinen integrierten EntwicklermodusWP_DEBUG , der Ihnen in diesem Fall nicht allzu viel hilft. Grundsätzlich verwendet WP die "Rewrite API" , einen funktionsbasierten Low-Level-Wrapper für die WP_RewriteKlasse, über den Sie im Codex lesen können . Das global $wp_rewriteObjekt steht zu Ihren Diensten, um es zu inspizieren oder mit der Klasse zu interagieren.
Das "Monkeyman" -Plugin fügt eine neue Seite hinzu, die im Admin-UI-Menü unter Tools abgelegt ist . Das "T5 Rewrite" -Plugin fügt der Seite Einstellungen > Permalinks eine neue Hilferegisterkarte hinzu . Meine Erweiterung fügt die Hilferegisterkarten zu den genannten hinzu Tools-Seite hinzu.
Hier ist ein Screenshot, wie der Inhalt der Registerkarte "T5 Rewrite" -Plugins-Hilfe aussieht.
Das "T5 Rewrite" -Plugin leistet hervorragende Arbeit bei der Überprüfung des Rewrite-Objekts. Und es macht noch mehr: Es fügt neue Möglichkeiten hinzu. Daher ist es (zumindest in meinen Installationen) Teil meines Basis-Plugins-Pakets.
Verzeihen Sie die Wiederaufnahme einer alten Frage, aber ich hatte die gleiche Notwendigkeit herausgefunden, dass diese Methode für mich perfekt funktioniert:
Diese Methode verwendet eine doppelte Desinfektion.
Der erste benutzt den save Modus Modus, in dem HTML- und PHP-Tags entfernt und Akzente entfernt werden (Zeichen mit Akzent werden durch nicht akzentuierte Entsprechungen ersetzt).
Der zweite queryModus stellt sicher, dass alle Leerzeichen durch Bindestriche ersetzt werden- und andere Satzzeichen ersetzt werden.
Antworten:
Auf Anhieb kann ich Ihnen keine Seite / Anleitung / Dokumentation zur Erzeugung von WP-Slugs geben, aber werfen Sie einen Blick auf die
sanitize_title()
Funktion.Verursachen Sie keinen falschen Eindruck durch den Funktionsnamen. Es ist nicht dazu gedacht, einen Titel für die weitere Verwendung als Seiten- / Beitragstitel zu bereinigen . Es wird eine Titelzeichenfolge verwendet und zur Verwendung in einer URL zurückgegeben:
Es könnte Rand Fälle, in denen der Kern tut etwas zusätzliche (Sie an der Quelle aussehen müsste , um das überprüfen
sanitize_title()
wird immer ausreichen , bei der Erzeugung von genau den gleichen Sie erwarten), aber dies mindestens 99% abdecken sollte, wenn nicht sogar alle Fälle .quelle
sanitize_title
in der Funktion angewendeten Filter durchgeführt wird oder ob dies von etwas anderem erledigt wird, nachdem die Funktion ausgeführt wurde.sanitize_title
Filter, den man auschecken muss. Es gibt aber auch andere verwandte Funktionen . Ich habe wirklich keine Ahnung davon. Manchmal scheintSimplePie
es einfacher zu verstehen als dasWP_Rewrite
Ding. Btw: Toscho arbeitet daran, die "Monkeyman Rewrite Analyzer" -Funktionalität in sein Plugin zu integrieren. Dort werden die Dinge wirklich interessant.Sie können diese Funktion verwenden:
Genau so funktioniert die Funktion wp url desinfizieren.
quelle
Kern zu Ihren Diensten
Abgesehen von WordPress gibt es keinen integrierten Entwicklermodus
WP_DEBUG
, der Ihnen in diesem Fall nicht allzu viel hilft. Grundsätzlich verwendet WP die "Rewrite API" , einen funktionsbasierten Low-Level-Wrapper für dieWP_Rewrite
Klasse, über den Sie im Codex lesen können . Dasglobal $wp_rewrite
Objekt steht zu Ihren Diensten, um es zu inspizieren oder mit der Klasse zu interagieren.Plugins, die bei der Suche helfen.
Toschos "T5 Rewrite" -Plugin und Jan Fabrys "Monkeyman Rewrite Analyzer" -Plugin leiten Sie Ihren Weg. Ich habe eine kleine Erweiterung für "T5 Rewrite" geschrieben, um sie nahtlos in den "Monkeyman Rewrite Analyzer" zu integrieren, den Sie im "T5 Rewrite" -Repos-Wiki hier auf GitHub finden .
Das "Monkeyman" -Plugin fügt eine neue Seite hinzu, die im Admin-UI-Menü unter Tools abgelegt ist . Das "T5 Rewrite" -Plugin fügt der Seite Einstellungen > Permalinks eine neue Hilferegisterkarte hinzu . Meine Erweiterung fügt die Hilferegisterkarten zu den genannten hinzu Tools-Seite hinzu.
Hier ist ein Screenshot, wie der Inhalt der Registerkarte "T5 Rewrite" -Plugins-Hilfe aussieht.
Vorlage = Pattern | Beschreibung = Erklärung | Beispiele
Anmerkungen
Das "T5 Rewrite" -Plugin leistet hervorragende Arbeit bei der Überprüfung des Rewrite-Objekts. Und es macht noch mehr: Es fügt neue Möglichkeiten hinzu. Daher ist es (zumindest in meinen Installationen) Teil meines Basis-Plugins-Pakets.
quelle
Wenn Sie sich die Kernfunktion wp_insert_post (post.php) ansehen, werden Sie feststellen, dass sie Folgendes bewirkt:
Das Wichtigste ist, dass sowohl wp_unique_post_slug als auch sanitize_title verwendet werden:
quelle
Verzeihen Sie die Wiederaufnahme einer alten Frage, aber ich hatte die gleiche Notwendigkeit herausgefunden, dass diese Methode für mich perfekt funktioniert:
Diese Methode verwendet eine doppelte Desinfektion.
Der erste benutzt den
save
Modus Modus, in dem HTML- und PHP-Tags entfernt und Akzente entfernt werden (Zeichen mit Akzent werden durch nicht akzentuierte Entsprechungen ersetzt).Der zweite
query
Modus stellt sicher, dass alle Leerzeichen durch Bindestriche ersetzt werden-
und andere Satzzeichen ersetzt werden.Hoffe das hilft jemandem! :)
quelle