it-swarm.com.de

Slug-Formatierung: Akzeptable Zeichen?

Ich habe viel darüber gegoogelt, also entschuldige ich mich aufrichtig, wenn es einen Kodexeintrag dafür gibt, aber für mein Leben kann ich keine feste Regel darüber finden, welche Zeichen in einer "Schnecke" akzeptabel sind (wirklich jede Schnecke) , aber genauer gesagt für einen benutzerdefinierten Beitragstyp in diesem Fall).

Gegenwärtig haben wir eine Situation, in der wir einige benutzerdefinierte Post-Typen mit einer Slug-Struktur wie (Pseudo) haben:

some_Context_Thats_Not_A_Category_slug/sub_context_thats_not_a_category_slug/ + der Beitragstitel

Das Segment in grey ist die "Schnecke" in ihrer Gesamtheit. In der Praxis würde das so aussehen:

hamburgers/cheeseburgers als Beitragstyp slug

Ist die Verwendung von Schrägstrichen in diesem Szenario zulässig/sicher?

Kriterien für die Annahme einer Antwort:

"Ja" oder "Nein" auf die gestellte Frage und einen Link, wo ich aktuelle WP Slug-Regelsätze finden kann.

Danke im Voraus!

5
Brandt Solovij

Nein, Schrägstriche dürfen nicht in Schnecken verwendet werden. Sie werden jedoch automatisch entfernt, wenn Sie versuchen, Schrägstriche in einen Slug im Bildschirm für die Nachbearbeitung einzufügen. Schnecken werden mit sanitize_title() bereinigt.

Leider gibt es keine einfache Möglichkeit zu erklären, was in einem Slug erlaubt ist und was nicht, geschweige denn, um einen einfachen Satz von Regeln anzugeben, an die sich gültige Slugs halten müssen. Wir können jedoch die wichtigsten Merkmale eines Slugs recht kompakt zusammenfassen: Ein Slug besteht aus ausschließlich alphanumerischen Kleinbuchstaben, Bindestrichen und Unterstrichen, ohne zwei oder mehr Bindestriche in einer Reihe (Folgen von Unterstrichen are dürfen). Außerdem kann ein Slug nicht mit einem Bindestrich beginnen oder enden.

sanitize_title ()

Parameter:

  • $title: Titel, der bereinigt werden soll
  • $fallback_title (optional, standardmäßig leere Zeichenfolge): Zu verwendender Slug, wenn der bereinigte $title leer ist
  • $content (optional, standardmäßig 'save'): Der Vorgang, für den die Zeichenfolge bereinigt wird

Die Funktion sanitize_title verhält sich wie folgt (standardmäßig mit den Standardargumenten $fallback_title und $context, ohne dass externe Filter angewendet wurden):

  1. Akzentuierte Zeichen wie "é" und "Ö" werden durch die entsprechenden "nicht akzentuierten" Zeichen ersetzt (in diesem Beispiel "e" bzw. "O").
  2. sanitize_title_with_dashes() wird für die resultierende Zeichenfolge aufgerufen

Die längere (und vollständigere) Erklärung finden Sie unten.

sanitize_title_with_dashes ()

Neben dem Parameter $title hat sanitize_title_with_dashes() zwei weitere Argumente, von denen das erste nicht verwendet wird und das zweite der Inhalt ist, $context, der von sanitize_title übergeben wird (und daher 'save' ist). sanitize_title_with_dashes() macht eine Menge Dinge, deshalb werde ich versuchen zu erklären, welche Abfolge von Schritten es ausführt, um einen String zu bereinigen.

  1. Alle HTML-Tags werden entfernt
  2. Prozentzeichen werden entfernt, mit Ausnahme der Zeichen in Oktetten (z. B. %20 für Leerzeichen).
  3. Die Zeichenfolge wird in Kleinbuchstaben konvertiert
  4. Alle HTML-Entitäten wie & werden entfernt
  5. Alle Punkte (.) werden durch Bindestriche (-) ersetzt
  6. Sowohl Bindestriche als auch Em-Bindestriche ( WikiPedia on Bindestriche ) sowie Leerzeichen werden in Bindestriche umgewandelt
  7. Einige Sonderzeichen wie Akzente (z. B. der Grabakzent) werden entfernt
  8. Das Zeichen "times" ( × ) wird durch "x" ersetzt
  9. Alle Zeichen außer alphanumerischen Zeichen, Leerzeichen, Bindestrichen und Unterstrichen werden entfernt
  10. Sequenzen von Bindestrichen (2 oder mehr Bindestriche in einer Reihe) werden durch einen einzelnen Bindestrich ersetzt
  11. Führende und nachfolgende Bindestriche werden entfernt

Und da haben Sie es, den vollständigen Prozess der Titelbereinigung!

13
engelen