perun.net – WordPress & Webwork



WordPress: "Bug" in den Conditional Tags

Von am 14. 10. 2010 um 13:37

Ich habe gestern einen kleinen Bug oder Feature – Frage des Standpunktes – in WordPress entdeckt. Und zwar im Zusammenhang mit Conditional Tags und Gedankenstrichen.

Ich hatte gestern bei einer Seite eines Kunden einen Titel, der einen Gedankenstrich beinhaltete. Hier ein Beispiel: Bla bla – blubb blubb. Aktiviert man sprechende Permalinks, dann "übersetzt" WordPress dies in bla-bla---blubb-blubb. An sich nicht falsch, der Gedankenstrich wird in einen einfachen Bindestrich (oder korrekter ausgedrückt Bindestrich-Minus) umgewandelt.

Wenn ich jetzt allerdings eine einfache Abfrage mache:

<?php if (is_page('bla-bla---blubb-blubb')) {...} ?>

dann wird das ignoriert. Erst als ich den Permalink auf bla-bla-blubb-blubb geändert und die entsprechende Abfrage im Code:

<?php if (is_page('bla-bla-blubb-blubb')) {...} ?>

angepasst habe, hat der Conditional Tag funktioniert. So wie es ausschaut, vertragen Conditional Tags nicht zu viele Bindestriche. Alternativ kann man hier anstatt auf den Permalink-Namen auf die ID der Page oder des Artikels zurückgreifen.

Diesen Artikel weiterempfehlen:

Hinweis:
Schulungsunterlagen für WordPress
Aktuell und praxiserprobt. Als E-Book für den Privatgebrauch oder als PDF-Volumenlizenz für den geschäftlichen Einsatz.

Verwandte Artikel:

 — 


11 Kommentare

  1. 1.Boris

    Kommentar vom 14.10.2010 um 15:10

    Hmm.. merkwürdig … was genau ist nochmal die Einstellung für "sprechende" Permalinks?

    Bei mir ist eingestellt (englisch!) "Day and Name", was so etwas erzeugt:

    …/2010/10/14/kein-inhalt-kein-abo/

    Mein WP (3.0.1) ersetzt hier den Gedankenstrich mit einem einfachen Bindestrich (zwischen "inhalt" und "kein"), was ja völlig in Ordnung ist.

    Drei Bindestriche als Ersetzung hatte ich dagegen bisher noch nicht.

  2. 2.Perun

    Kommentar vom 14.10.2010 um 15:58

    @Boris,

    als Einstellung hatte ich in deutschem Blog die Einstellung Monat und Name.

  3. 3.Frank

    Kommentar vom 14.10.2010 um 17:14

    Könnte auch sein, dass ein Plugin für die deutsche Sprache aktiv ist und dies erstellt? Bei mir wird im test dies als Permalink kreiert: /bla-bla-blubb-blubb/. Dies passiert im Standard oder diesem Plugin für die deutsche Sprache.

  4. 4.Perun

    Kommentar vom 14.10.2010 um 17:20

    @Frank,

    ich habe das jetzt auch hier noch einmal auf perun. net getestet, mit der deutschen Sprachdatei und German Permalinks bekomme ich das gleiche Ergebnis wie du. Beim Kunden ist weder German Permalinks noch ein anderes "Entschärfungsplugin" aktiviert.

  5. 5.Steffen

    Kommentar vom 14.10.2010 um 19:00

    Bei mir ist es ähnlich: /bla-bla-–-blubb-blubb/
    mit
    deutscher Sprachdatei.

  6. 6.Frank

    Kommentar vom 14.10.2010 um 20:13

    @Perunf und Steffen: eventuell irgendwas aktiv, was auf den Filter sanitize_title zugreift?

  7. 7.Daniel S

    Kommentar vom 14.10.2010 um 21:37

    Aus diesem Grund gibt es Slugs – und diese sollten keine Leerzeichen beinhalten. Hat an und für sich nichts mit den Bindestrichen zu tun.

  8. 8.Perun

    Kommentar vom 14.10.2010 um 22:13

    @Daniel S,

    wo siehst du im Artikel einen Leerezeichen im Slug bzw. in der URL?

  9. 9.Dirk

    Kommentar vom 15.10.2010 um 02:26

    Ich passe die Permalinks eh meist noch an (jedenfalls habe ich das im alten Blog meist so gemacht) :)

  10. 10. – Ralf

    Kommentar vom 16.10.2010 um 11:40

    Das ist natürlich ein Problem das man in der Programmierung häufiger antrifft. Das Minuszeichen wird als Trennzeichen verwendet, der Bindestrich in ein Minuszeichen umgewandelt. Somit hat das Minuszeichen eine Doppelbedeutung. Das ist in etwa so, als würde man in einem Text alle Konsonanten in Minuszeichen umwandeln und dann von einem der den Text nicht kennt verlangen diese Umwandlung rückgängig zu machen. Woher soll WordPress wissen was ein Trennzeichen ist und was früher ein Bindestrich war?

    Das Problem dürfte somit so ziemlich alle Zeichen betreffen die in einer URL nicht darstellbar sind. Entweder sie werden bei der Umwandlung in einen Permalink unterschlagen. Oder sie werden in ein Ersatzzeichen umgewandelt.
    Die Umwandlung in ein Ersatzzeichen hat den Nachteil das man die Umwandlung nicht rückgängig machen kann. Das Unterschlagen hat den Nachteil dass das Zeichen schlichtweg fehlt. Das WordPress sich für das Ersatzzeichen entschieden hat, ist vielleicht Geschmackssache. Das es das Trennzeichen als Ersatzzeichen verwendet, finde ich hingegen etwas suboptimal.

  11. 11.WordPress und Computer Literatur – Gewinnspiel

    Pingback vom 17.10.2010 um 14:32

    [...] Simovic erfahren möchte, sollte mal auf der Amazon Autorenseite vorbeischauen oder seinen Blog [...]

Tut mir Leid, aber die Kommentar-Funktion ist momentan deaktiviert.



Weblog der perun.net webwork gmbh mit Artikeln zum Thema WordPress, Webwork, und Internet.