Rufen Sie die Tags als Array ab, konvertieren Sie das Tag in eine Zeichenfolge, und ersetzen Sie Leerzeichen durch Bindestrich

Ich versuche, die Tags aus dem Post zu erhalten (es wird nur ein Tag geben), dann erstelle ich eine neue Variable mit diesem Tag-Namen, aber die Leerzeichen werden durch Bindestriche ersetzt.

Dies ist, was a bisher, aber ich kann es nicht bekommen, um den Wert des Tags (sowohl mit Leerzeichen und ohne) anstelle von “Array” anzuzeigen. Im folgenden Code versuche ich nur, es jetzt mit den Bindestrichen anzuzeigen.

$posttags = get_the_tags(); $newname = str_replace(' ', '-', $posttags); if ($posttags) { foreach ($posttags as $tag){ echo 'Post by: '. $newname .''; } } 

Solutions Collecting From Web of "Rufen Sie die Tags als Array ab, konvertieren Sie das Tag in eine Zeichenfolge, und ersetzen Sie Leerzeichen durch Bindestrich"

Lass uns das mit deinem Fragetitel auseinander brechen:

Rufen Sie die Tags als Array ab, konvertieren Sie das Tag in eine Zeichenfolge, und ersetzen Sie Leerzeichen durch Bindestrich

Erhalte die Tags als Array

get_the_tags ist die korrekte function, Sie haben jetzt eines von 2 Dingen:

  • ein Array von Termobjekten (ein Tag ist ein Begriff in der Taxonomie der Tags)
  • false , auf diesem Post gibt es keine Tags
  • Ein WP_Error Objekt, etwas ging schief

Also müssen wir nach diesen Fällen suchen, nachdem wir angenommen haben, dass die Tags zurückgegeben werden, aber es gibt keine, was wird passieren? Wir müssen ihm sagen, was passieren wird und undefinierte Dinge werden passieren, und das könnte alles sein, wahrscheinlich ein Fehler von 500

So können wir das erste Bit des Codes aktualisieren:

 $tags = get_the_tags(); if ( is_wp_error( $tags ) ) { return; // there was an error } if ( false === $tags ) { return; // there were no tags on this post } // now we can do stuff with the tags 

Konvertieren Sie das Tag in eine Zeichenfolge

Schlau, jetzt haben wir eine Reihe von Tags. Du hast erwähnt, dass es nur 1 Tag geben sollte, aber wer weiß, welche Plugins ihre eigenen Tags hinzufügen, also vergewissere dich, dass dein Code das richtig handhabt:

 foreach ( $tags as $tag ) { // do something with our tag break; // exit after the first one } 

Ersetzen Sie die Leerzeichen durch Bindestriche

Jedes $tag ist ein WP_Term Objekt, Sie können die Begriffe slug mit $tag->name , die bereits die URL-freundliche Version haben

Warum aber stören? Dafür gibt es eine function! Wir können das ersetzen:

 echo 'Post by: '. $newname .''; 

Mit:

 $url = get_term_link( $tag, 'tags' ); echo 'Post by: '.esc_html( $tag->name ).''; 

Beachten Sie, dass ich die Flucht hinzugefügt habe. Flucht ist wichtig und wird die meisten Hacks verhindern. Trotz seiner Anti-Hacking-Superpower wird es fast nie auf WordPress-Code angewendet 🙁

Wenn Sie str_replace für ein Array verwenden, erhalten Sie ein Array zurück. Also ist $newname Recht ein Array.

Vielleicht möchten Sie die str_replace stattdessen in Ihrer foreach Schleife tun – so funktioniert es auf jeden einzelnen Artikel und dann zeigen Sie den einzelnen Artikel an.

Oder wenn Sie str_replace für das gesamte Array verwenden, müssen Sie Ihre foreach Schleife wie foreach($newname as $tag) ändern: foreach($newname as $tag) und echo $tag nicht $newname .