WordPress: automatisch Text an den Content von jedem Beitrag oder jeder Seite anhängen

Wordpress Hilfe
WordPress: automatisch Text an den Content von jedem Beitrag oder jeder Seite anhängen

Manchmal möchte man in seinem Blog einen kurzen Hinweis unter alle Beiträge einbauen – ohne ein zusätzliches Plugin zu installieren. Bei mir gilt die Regel: Was man ohne Plugin machen kann, sollte man ohne umsetzen, denn jedes Plugin bläht WordPress wieder auf und oft haben die installierten Plugins einen deutlichen Overhead an Funktionen, die man eigentlich garnicht benötigt. Ein weiterer Punkt, der gegen immer mehr Plugins spricht, ist natürlich die Sicherheit von WordPress. Die meisten Attacken von Hacker laufen über veraltete oder unsicher-programmierte WordPress-Plugins. Der WordPress Core ist in der Regel sehr sicher, wenn man sich um die Updates kümmert.

Lösung über die functions.php

Ich habe in meinem Blog einen Zusatz unter den Artikeln einbauen wollen, der darauf hinweist, dass ich am Amazon-Partnerprogramm teilnehme. Laut Amazons neuer Regelung in 2018 muss dafür der Satz „Als Amazon-Partner verdiene ich an qualifizierten Käufen.“ auf jeder Seite eingerichtet werden, auf der Amazon-Werbung zu finden ist. Da ich diese ganzen Seiten nicht einzeln editieren wollte, füge ich den Hinweis einfach unter jeden Beitrag ein.

Um solche kleinen Funktionen zu ergänzen, bietet WordPress die Möglichkeit, im Ordner des Themes in der Datei „functions.php“ die entsprechenden PHP-Code-Snippets einzubinden. Wenn diese Datei bei euch noch nicht existiert, legt sie am besten an und kopiert den Code unten hinein.

Der „the_content“-Hook macht’s möglich

WordPress bietet mit „Hooks“ flexible Möglichkeiten, um die Funktionen, die in WordPress ablaufen zu erweitern oder zu verändern. Wir verwenden nun den the_content-Hook, um den Inhalt des Beitrags oder der Seite zu verändern, bevor er auf der Webseite ausgegeben wird. Damit der Zusatz auch nur auf Seiten und Beiträgen eingebaut wird und nicht in Kategorie-Übersichten oder ähnlichem ausgegeben wird, kommen noch die Abfragen in_the_loop() und is_main_query() zum Einsatz. Hier das fertige Script:

add_filter( 'the_content', 'filter_the_content_in_the_main_loop' );

function filter_the_content_in_the_main_loop( $content ) {
 
    // Prüfen ob wir in dem Loop eines Beitrags oder einer Seite sind
    if (( is_single() OR is_page()) && in_the_loop() && is_main_query() ) {
        // Den HTML Teil für die Schrift könnt ihr beliebig ändern oder erweitern
        return $content . '<p><font size="-0.5pt">Hinweis: Als Amazon-Partner verdiene ich an qualifizierten Käufen.</font></p>';
    }
 
    return $content;
}

Wenn man den Hinweis nur auf Beiträgen möchte und nicht auf Seiten (wie Impressum oder ähnlichem), dann ändert man die if-Anweisung wie folgt:

if ( is_single() && in_the_loop() && is_main_query() ) {

Wenn du noch Fragen zur Verwendung hast oder Vorschläge für eine Verbesserung des Codes, dann freue ich mich über deinen Kommentar.

Hinweis: Als Amazon-Partner verdiene ich an qualifizierten Käufen.

Wie würdest du diesen Beitrag bewerten?

 

3 Comments

  1. Frank sagt:

    Danke schön für den Beitrag – genau so etwas habe ich gesucht.
    Leider funktioniert es bei mir nicht.
    Aber ich habe auch wenig Ahnung von der Thematik.
    Vergleiche ich es mit anderen Funktionsaufrufen, dann haben die immer noch einen add_action() oder ähnliches dabei.
    Falls Du einen Tipp hast, freue ich mich über einen Hinweis.
    Danke schön! 🙂
    Frank

    • Sir Apfelot sagt:

      Hi Frank! 1000 Dank für deinen Hinweis. Da fehlte in der Tat der Aufruf „add_filter()“. Ohne den wird die Funktion nicht in den Hook eingebaut. Ich habe es ergänzt. Bitte probier mal, ob es jetzt mit dem neuen Code klappt! LG! Jens

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.