WordPress “umwickelt” einen Artikel automatisch mit einem <p></p> Tag.
Das ist meist sinnvoll, geht es doch bei WordPress Artikeln zumeist um Texte die richtigerweise in Absätze, also “paragraphs” eingeteilt werden.
Manchmal kann dies aber auch nicht gewünscht sein. Z.B. wenn man bloß Bilder ausgeben will, Code-Schnipsel oder URL´s.

Das Problem:

Ich wollte beispielsweise eine Kategorie “Links” anlegen. Die Beiträge sollten nur eine URL auf eine externe Seite und einen Titel enthalten.
Diese Links sollten dann, abhängig von den gewählten Schlagworten, unter den passenden Artikeln angezeigt werden.
Der Code für den Inhalt einer solchen Loop sah zunächst so aus

<li class="ws_similar_item">
<a href="<?php echo the_content(); ?>" target="_blank" rel="bookmark"><?php the_title(); ?></a>
</li>

Dies hat im Grunde auch geklappt. Das Resultat war eine unsortierte List von Text Links. Der Titel des Beitrags wurde als Link auf die im Inhalt festgelegte URL angezeit.
Das Problem: WordPress hat automatisch <p></p> um die URL gepackt. Damit hat der Link natürlich nicht funktioniert.

Der Quelltext sah nämlich in etwa so aus:

<a href=”<p>derlink.xy/unterseite/</p>” target=”_blank” rel=”bookmark”>Titel</a>

Nun bestand die Möglichkeit generell die <p> Tags mit der WordPress Filterfunktion “wpautop” zu deaktivieren.

Das würde aber die gesamte Seite und alle Artikel betreffen.
Zwar gibt es Plugins die einen für jeden Artikel einzelnd einstellen lassen ob und wie der Text gefiltert wird. Dies hätte dann aber den Artikel, egal an welcher Stelle er erscheint, betroffen.
Auch habe ich kein Plugin gefunden das diese Aufgabe für eine komplette Kategorie automatisch übernimmt. Das hätte bedeutet 250 angelegte Link-Beiträge per Hand zu bearbeiten und beim Anlegen eines neuen Link Beitrags immer auch die korrekte Formatierung wählen zu müssen.

Alles also nicht ideal.

Ich wollte ja nur das genau an einer Stelle und innerhalb einer bestimmten Loop der <p> Tag herausgefiltert wird.

Die Lösung:

<a href="<?php$meinInhalt = get_the_content();
$tags = array("<p>", "</p>");
$meinInhalt = str_replace($tags, "", $meinInhalt);
echo $meinInhalt;
>"
target="_blank" rel="bookmark">
<?php the_title(); ?>
</a>

WordPress holt sich damit den Inhalt, sucht nach allen <p> und </p> Tags, ersetzt diese mit “”(also mit nichts) und gibt das Ergebnis dann aus. Das Ergebnis ist ein sauberer, funktionierender externer Link innerhalb einer WordPress Loop

Leider wurde bisher noch kein Kommentar abgegeben


Kommentar schreiben (* Pflichtfelder)