Codex-functionsprobleme, wenn im Kategorienamen ein Apostroph vorhanden ist

Ich arbeite an einer Website, die größtenteils nach Kategorien verwaltet wird. Zwei der Kategorien haben Apostrophe in ihnen … ex. “Joe’s Place” und “Tinas Lounge”. (Aktuelle Titel geändert, das sind Beispiele …) Die Kategorie Slugs sind “joes-place” und “tinas-lounge”.

Der Kunde bat um einen Breadcrumb auf der Website … Leider schlägt der Breadcrumb-Aufruf fehl, wenn die Kategorie einen Apostroph in ihrem Namen hat. Der Fehler tritt beim Aufruf von get_cat_ID auf. Oh, und wenn der Breadcrumb fehlschlägt, schlägt die ganze Seite fehl. Hier ist ein Fragment meines Breadcrumb-Codes …

if ( is_category() ) { // single_cat_title() Displays or returns the page title if a category // or tag archive is queried. $catTitle = single_cat_title( "", false ); echo '"; // troubleshooting line... $cat = get_cat_ID( $catTitle ); echo '"; // troubleshooting line echo "
  • ". get_category_parents_custom( $cat, TRUE, ' » ' ) ."
  • "; }

    get_cat_ID gibt einfach eine 0 . Uh-oh … wenn ich mir meinen Fehlerbehebungscode ansehe, kann ich sehen, dass $ catTitle Joe’s Place zurückgibt

    Autsch .. Es ist wirklich nicht klar, genau welches Format benötigt wird, wo der Apostroph betroffen ist. Wenn ich im Codex-core weiter und weiter nachdenke, kann ich sehen, dass get_cat_ID eine function get_term_by() , die warnt, dass “$ value nicht HTML- get_term_by() für das Feld ‘name’ $ ist. Sie müssen es selbst tun, falls erforderlich.” Ich gehe davon aus, dass das mein Problem ist. aber was bedeutet es, eine Zeichenfolge “HTML-Escape”?

    Ich habe versucht, $catTitle2 = htmlspecialchars_decode($catTitle); Nein, geh dorthin.
    Ich habe versucht, $catTitle2 = esc_html($catTitle); Nein, geh dorthin. In beiden dieser vorherigen functionen ändert sich die Zeichenfolge nie ein bisschen.

    Ich versuchte manuell die Zeichenfolge “Joe’s Place” in den Anruf einzuführen, und WOW, das hat total funktioniert.

    In der Zwischenzeit werde ich eine einfache String-Replace-function machen, aber das scheint so ein Hack zu sein.

    Gibt es eine PHP- oder WordPress-function, die den String zurück zu einem einfachen Apostroph? Was ist der richtige Weg, um dieses Problem zu beheben?

    Update: Ich bin auf diesen Beitrag gestoßen : Mein Quickfix besteht aus etwas Code, der dort mit einer kleinen Modifikation vorgeschlagen wurde:

      $catTitleCorrected = html_entity_decode(str_replace("’","'",$catTitle)); 

    Solutions Collecting From Web of "Codex-functionsprobleme, wenn im Kategorienamen ein Apostroph vorhanden ist"

    Sie können dies verwenden. Möge es dir helfen.

    ent2ncr

    Konvertiert benannte Entitäten in nummerierte Entitäten.

    So scheint es, dass Ihr endgültiges Ziel ist, die aktuelle Kategorie-ID zu erhalten, um sie in einer get_category_parents_custom function zu verwenden. Sie verwenden single_cat_title , um den aktuellen Katzennamen zu erhalten, und übergeben ihn an get_cat_ID , um die aktuelle Kategorie-ID zu erhalten.

    Ich denke, dass Sie Ihr Leben härter machen, weil Sie get_queried_object_id verwenden get_queried_object_id , um die aktuelle Kategorie-ID zu erhalten, wenn is_category() wahr ist, oder Sie können auf das Kategorieobjekt zugreifen, indem Sie get_queried_object und dann die Kategorie-ID und das Namensformular verwenden. Beispielcode:

     if ( is_category() ) { $cat = get_queried_object(); // if you also need category name uncomment next line // $catTitle = $cat->name; echo "
  • " . get_category_parents_custom( $cat->term_id, TRUE, ' » ' ) . "
  • "; }