Werbung im WordPress Artikel automatisch einblenden

Du willst Adsense Blöcke oder auch jede beliebige andere Werbung in deinen Artikeln einblenden. Dafür gibt es jede Menge Plugins, aber hast du auch gewusst, dass die meisten dieser Plugins dein Geld stehlen. Hier findest du eine sichere Lösung.

Adsense Plugins gibt es wie Sand am Meer. Leider zeigen die meisten der Plugin Programmierer ihren Enthusiasmus, weil sie beinhart einen kleinen Prozentsatz der Werbeeinblendungen auf ihr eigenes Konto verbuchen. Manche machen dies auffälliger, andere ganz unauffällig. Nebenbei schicken sie munter Daten an sich weiter, verwenden alten Code (synchron) usw. Jetzt gibt es endlich ein offizielles Plugin von Google, das ist aber im Beta Stadium und kann nicht innerhalb von Artikeln einblenden, was die mit Abstand lukrativste Variante ist.

Nachdem ich ohnehin der Meinung bin, dass man jedes Plugin, das man vermeiden kann, auch vermeiden sollte. (Plugins sind die Standard Sicherheitslücken über die Hacker auf WP Sites eindringen.) Bastle ich hier eine Werbeeinblendung per Hand. Ziel ist es innerhalb eines Artikels die Werbungen automatisch an sinnvollen Stellen einzubauen, woran auch viele Plugins nach wie vor scheitern.

Ich mache das nicht als Plugin, sondern schreib es einfach in die functions.php meines Themes, das reicht. Um Übersichtlichkeit zu bewahren includiere ich in der eigentlichen functions.php einfach ein weiteres php File, in dem ich dann die Einblendungen mache.

In die functions.php im verwendeten Theme kommt also :

Dann legt man im selben Verzeichnis die Datei addAd.php an. Dort steht folgendes:

kurze Erklärung

In Zeile 2 wird der Filter für the_content gesetzt. Der angegebenen Funktion (addAd) wird der gesamte Inhalt eines Artikels übergeben und erwartet diesen auch wieder (ev. verändert) zurück.

Ab Zeile 4 beginnt die Funktion.

Zuerst wird der Inhalt unverändert zurückgegeben, wenn es sich um einen multiple Post handelt, also um eine Seite wo mehrere Artikel sichtbar sind. Hier blende ich die Werbungen anders ein.
Weiters wird bei feeds und bei pages keine Werbung eingeblendet. Der bei Seiten Werbung will, kann das natürlich entsprechend ändern.

In Zeile 7 wird geprüft ob der HTML Kommentar <!–noadd–> im Artikel steht. So hat man die Möglichkeit einzelne Artikel von der Werbeeinblendung auszunehmen indem man einfach diesen Kommentar irgendwo in den Artikel schriebt. (Im HTML Modus!)

Von Zeile 10-18 werden die Werbungen definiert. Man kann beliebig viele Werbeblöcke in das Array legen. Bei Bedarf kann man sie mit divs umgeben, die etwas Styling machen. Hilfreich sind hier die WP-Klassen alignright und alignleft, die eigentlich jedes Theme kennen sollte. Bei der letzten Werbung hab ich definiert, dass diese nur eingeblendet werden soll, wenn der Artikel länger als 6000 Zeichen ist.

Die erste Angabe im Array ist die Angabe wo vertikal die Werbung eingeblendet werden soll. Hier gibt es top->Werbung ganz oben, bottom->Werbung ganz unten, center->Werbung ca. in der Mitte und third->Werbung ca. nach einem Drittel.

Ich blende z.B. in der Mitte immer eine Werbung ein, nach einem Drittel aber nur, wenn der Artikel länger als 6000 Zeichen ist.

Über die Funktionalität von 21-47 werden gute Positionen zum Einfügen der Werbung gesucht. Dazu wird über die Hilfsfunktion findNodes das Ende eines Absatzes, ein <br> etc. gesucht. Es wird auch darauf geachtet, dass keine Bildgallery „gesprengt“ wird. Die Logik ist eher einfach gehalten, funktioniert aber recht gut.

In Zeile 54 wird vor und nach dem Artikel noch das Google Markung für den Text eingefügt, der verwendet werden soll um das richtige Thema für die Werbung zu bestimmen. Das kann man auch raus geben, macht aber Sinn.

Das wars auch schon.

Verwendung ohne Verstehen

Auch das geht. Einfach in Zeile 13, 15 und 18 einen Werbeblock einfügen (Adsense oder was auch immer) und in das Theme spielen. Fertig.

«  -  »

2 Kommentare zu

  1. Lieber CodingFreak,

    vielen Dank für den Artikel. Ich habe bei der Anwendung folgendes Problem:

    in der adAdd.php bekomme ich bei Zeile 21 einen Fehler (Parse Error:syntax error, unexpected ‚=‘, expecting ‚)‘ on line 21.

    Da meine Kenntnisse nur limitiert sind, kann ich mir kaum selbst helfen. Ich wäre für Hilfe super dankbar.

    Liebe Grüße, Mark

  2. uups. da hat sich ein Fehler eingeschlichen. Damit der Quellcode nicht als php-code interpretiert wird, sondern als solcher dargestellt wird muss man Sonderzeichen teilweise etwas anders eingeben. Das macht manchmal Probleme. Jetzt sollte es passen. lg

Senf dazugeben

*