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.
Kapitel in diesem Beitrag:
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.
Meine Tipps & Tricks rund um Technik & Apple
Ähnliche Beiträge
Seit 2012 betreibe ich meinen Blog als Sir Apfelot und helfe meinen Lesern bei technischen Problemen. In meiner Freizeit flitze ich auf elektrischen Einrädern, fotografiere mit meinem iPhone, klettere in den hessischen Bergen oder wandere mit meiner Familie. Meine Artikel behandeln Apple-Produkte, Drohnen-News und Lösungen für aktuelle Bugs.
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
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
Funktioniert traumhaft – vielen Dank! :-)
Hallo Frank,
hab vielen lieben Dank für deinen Beitrag! Genau so etwas hatte ich gesucht :)
Eine Frage hätte ich noch: Gibt es eine Möglichkeit, das Fokus-Keyword aus Yoast auszulesen und in den obigen Text einzufügen?
z.B. Hinweis: Als Amazon-Partner verdiene ich an qualifizierten Käufen von [Fokuskeyword] z.B. Schaltraum).
Liebe Grüße
Sandra
Hi Sandra! Ich glaube, die ganzen Variablen und auch das Focuskeyword kann man nur im Snippet einsetzen. Also in Meta-Title und Meta-Description. Mit PHP Programmierung kann man es vielleicht extrahieren und irgendwie in dem Satz ausgeben, aber ich habe keine Ahnung, wie man das macht.
Hallo Jens, kein Problem! Dann umschreibe ich es erst einmal :)
Hab trotzdem ganz, ganz vielen lieben Dank!
Liebe Grüße
Sandra
Hallo Jens,
eine Frage zu diesem PHP Schnipsel. Wenn ich diesen Code einfüge, dann wird ein Text unter Posts angezeigt (soweit so gut), aber auch auch unter Woocommerce Produktseiten. Dort sollte dieser Text eigentlich nicht stehen. Wie muss ich denn den Code anpassen. Schon einmal vielen Dank.
Gruß
Norbert
Hallo Norbert! Gute Frage, nächste Frage! :D Ich habe keinen Schimmer von WooCommerce. Ich nehme an, man müsste eine Abfrage wie „if (is_page())“ oder so einbauen, allerdings mit der Erkennung, ob es eine WooCommerce Produktseite ist. Aber wie das genau geht, weiß ich leider nicht, da ich die WooCommerce Eigenheiten nicht kenne… :(
Hi,
Ist es möglich mit ACF Pro mit einem Custom Field zu erstellen und diesen für alle Beträge automatisch anzeigen zu lassen am besten direkt unter der h1 Überschrift? Wenn ja gibt es dafür vielleicht ein Plugin ?
Hallo Christof! Ich glaube, ACF ist für diesen Zweck nicht so gut geeignet. Die Felder sind ja immer auf den entsprechenden Post bezogen, wenn ich mich nicht täusche. Du kannst es aber vermutlich mit Ad Inserter lösen. Dort kannst ein Text anlegen und dann dem Feld sagen, wo es erscheinen soll. Es gibt auch die Option „alle Beiträge“ und ich glaube, man kann auch „unter der Überschrift“ oder sowas definieren…
Hi Jens,
Danke für die Antwort.
Ich hatte halt vor das die Preise, die ich bei ACF hinzugefügt habe je nach Post auftauchen. Da es ja verschiedene Preise sind, weshalb ich ACF nutze. Kann man das vielleicht mit Ad inserter kombinieren? Es sollte halt ungefähr wie auf der Webseite Reiseuhu aussehen, sowie auch die unterschiedlichen Preise die dort unter der H1 auftauchen.
Du kannst in Ad Inserter auch PHP-Code an einer Stelle einfügen. Wenn du es schaffst, den ACF Datenbank-Inhalt auszulesen und auszugeben, hast du das Problem gelöst. :D
Hi Jens,
Danke es hat echt gut geklappt, weißt du vielleicht noch, wie die Preise dort die Größe und Farbe anpassen kann?
Halalo Christof! Das wirst du per CSS machen müssen. Oder du baust es mit style=“xyz“ direkt in ein HTNL Tag ein.
Hi Jens,
Vielen Dank für deine Hilfe. Hat echt geholfen danke! :)
lg
christof
Prima, gerne! War zwar nur Wischiwaschi-Hilfe, aber manchmal braucht man ja nur den richtigen Anstoß. 😂
Hallo,
der Code funktioniert bei mir nicht..
so sieht meine functions.php aus:
is_home ) {
$query->set( ‚cat‘, ‚-390‘ );
}
return $query;
}
add_filter( ‚pre_get_posts‘, ‚exclude_category_home‘ );
// Add Shortcode
function my_backlink() {
return ‚Zurück zur Übersicht‚;
}
add_shortcode( ‚backlink‘, ‚my_backlink‘ );
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() && in_the_loop() && is_main_query() ) {
// Den HTML Teil für die Schrift könnt ihr beliebig ändern oder erweitern
return $content . “;
}
return $content;
}
Hallo Christian! Grundsätzlich: Wenn du Leuten Fehler meldest und Hilfe suchst, wäre es schön, mehr als „funktioniert bei mir“ nicht als Input zu erhalten. Meinst du, es kommt keine Ausgabe? Siehst du eine Fehlermeldung? Ich sehe zum Beispiel, dass du bei dir den Text rausgelöscht hast, der ausgegeben werden soll. So kann einfach keine Ausgabe kommen. Aber vielleicht gibst du ein bisschen mehr Feedback, wo es klemmt. Danke!
Und ich glaube, du musst im Code mal die ganzen einfachen Anführungsstriche durch neue ersetzen. Die sehen mir nicht ganz nach denen aus, die man mit SHIFT + # bekommt. Könnte aber sein, dass das bei der Anzeige in meinem Code schon von Wordpress falsch dargestellt wird.
Ich wollte nur kurz ein „Danke“ hinterlassen, genau nach sowas hatte ich gesucht. Selbst ich als Laie habe es direkt umgesetzt bekommen.
Danke :)
Hallo Maik! Gerne geschehen. 😊