Colorscheme

Die Grenzen von Adsense sprengen


Habt ihr auch so ein Problem mit Adsense: an welcher Stelle soll ich die Ads im Artikel ausgeben, wieviel soll ich schreiben, lohnen sich überhaupt kurze Artikel? Man ist recht eingeschränkt, wenn man Adsense in seinem Blog ausgeben will, entweder vor dem Artikel oder nach dem Artikel. Andererseits gibt es auch die Situation, dass man nur einen sehr kurzen Artikel hat und am liebsten dort gar kein Adsense-Ad anzeigen möchte, was macht man dann?

Ich zeig es euch, doch dafür müssen wir unter die Motorhaube von Wordpress schauen, wir werden sehen welche Funktion dafür verantwortlich ist das die Artikel in Wordpress ausgeben werden, wie man diese Funktion manipulieren kann und wie man beliebige Bedingungen definieren kann, um den Adsense-Code am richtigen Ort, zur richtigen Zeit zu den richtigen Bedingungen auszugeben. Seit ihr bereit? Dann schnappt euch noch schnell nen Kaffee und los gehts!

Die Adsense-Problematik und kein Plugin in Sicht

Bevor ich anfange will ich noch schnell jegliche Kritik zerschmettern: es gibt Plugins mit denen es möglich ist, Adsense in Wordpress-Artikeln an jeder beliebigen Stelle auszugeben und auch wenn diese Plugins ultra flexibel bei der Ausgabe sind, sind sie dennoch in keinster Weise zu empfehlen, denn sie sind für die Trennung von Layout und Content schädigend. Was ich damit meine? Ganz einfach, der Adsense-Code wird mit in den Artikel geschrieben und das kann tödlich sein. Angenommen ihr habt ein Design in welchem die Links grün sind, zum besseren blending macht ihr eure Links in den Ads auch grün. Ihr speichert diese Information mit den Artikeln ab. Nach einem halben Jahr und vielen weiteren Artikeln später entscheidet ihr euch für ein Redesign, müsst aber bitterlich feststellen, dass eure geschriebenen Artikel und die darin enthaltenen Ads mittlerweile garnicht mehr so gut in euer Design blenden. Deswegen trennt man Content von Layout und Adsense von Content.

Die Funktion “the_content”

Für alle die kein Wordpress benutzen heißt es entweder an dieser Stelle “bye bye” oder “riskiert einen Blick” denn vielleicht sind diese Informationen dennoch auf euer Szenario anwendbar. Ich werde nun näher auf die Wordpress-Funktion “the_content” eingehen und zwar für die Wordpress-Version 1.5, die Funktion gibt es auch in 2.0 und höher, es könnten sich allerdings ein paar Dinge geändert haben, also haltet die Augen offen.

Um den Content in einem Blog auszugeben, benutzt man folgenden Funktion:

<?php the_content(); ?>

Nun geht Wordpress hin und sucht den passenden Artikel, verarbeitet ihn ein bisschen und gibt ihn dann komplett aus. Entscheidend ist hierbei, das wir von aussen oder über unser Template nicht auf die Verarbeitung des Artikels zugreifen können, also müssen wir tiefer gehen.

Unter die Motorhaube von Wordpress

Die Datei, die die berühmt-berüchtigte “the_content” Funktion beinhaltet, findet sich im Wordpress-Ordner “wp-includes” und heißt “template-functions-post”. Der Inhalt der Funktion sieht folgendermaßen aus:

$content = get_the_content($more_link_text, $stripteaser, $more_file);
$content = apply_filters('the_content', $content);
//hier können wir mit der Formatierung beginnen
$content = str_replace(']]>', ']]&gt;', $content);
echo $content;

Ich habe die Stelle markiert an der wir mit der Formatierung beginnen können, dies muss unbedingt nach “apply_filters” sein, denn vorher haben wir in unserem Content noch keine Html-Tags drin und die brauchen wir gleich um die richtigen Stellen zu finden.

Die Möglichkeiten

Ich habe mir drei Szenarien überlegt:

  1. Kurze Beiträge - in kurzen Beiträgen will ich nur schnell auf etwas hinweisen, auf einen guten Artikel oder dergleichen. Erstens sieht Werbung darin Mist aus, denn es ist viel voluminöser als der Artikel selbst und zweitens wird bei so wenig Content meist keine relevante Werbung gefunden. Deswegen will ich darin auf Adsense verzichten
  2. Mittlere Beiträge - da gehe ich von min. 2 Textblöcken aus. Ans Ende setz ich dann ein Medium Rectangle
  3. Lange Beiträge - hier wirds eigentlich erst interessant, ich will bei langen Artikeln zwischen zwei Textblöcken ein Medium Rectangle platzieren und am Ende ein Banner

Die Umsetzung

Wer sich in bisschen mit HTML auskennt, weiß das Textblöcke in die Html-Tags “<p></p>” gepackt werden. Dies können wir nutzen um unseren Content mit Adsense zu formatieren.

Bei kurzen Artikeln wird kein Adsense ausgegeben, diese erkennt man daran, das sie nur einen Textblock haben, sprich nur einmal die Kombination

<p>
Hier steht der Text
</p>

vorkommt. Bei mittleren und langen Beiträgen, soll nach dem zweiten Block ein Medium Rectangle ausgegeben werden. Also müssen wir im Artikel einfach nach dem zweiten “</p>” unseren Adsense-Code ausgeben.

<p>Hier steht der erste Textblock</p>
<p>Hier steht der zweite Textblock</p>
Hier kommt der Adsense-Rectangle-Code

Der Code

Ich schreibe erstmal den Code und darunter dann Zeilenweise die Erläuterung:

$content = get_the_content($more_link_text, $stripteaser, $more_file);
$content = apply_filters('the_content', $content);
//Hier können wir mit der Formatierung beginnen
$blocks = explode('</p>',$content);
$blocks[1] .= 'Hier bitte Adsense-Code einfügen';
$content = join('</p>',$blocks);
//Hier endet die Formatierung
$content = str_replace(']]>', ']]&gt;', $content);
echo $content;

  • Zeile 1: Nicht wichtig
  • Zeile 2: Der Artikel wird mit Html-Tags versehen damit die Ausgabe nachher so aussieht wie es gedacht war
  • Zeile 3: Nur ein Kommentar, nicht wichtig
  • Zeile 4: Mit dem PHP-Befehl “explode” können wir einen string (unseren Aritkel) aufspalten. In meinem Fall benutze ich den Tag “</p>” um den Artikel in einzelne Blöcke zu zerlegen, natürlich sind auch beliebige andere Aufplittungen möglich, dann muss man nur ein anderes Trennzeichen auswählen.
  • Zeile 5: $blocks[1] bedeutet das ich auf den 2 Block zugreife, den ich aufgesplittet habe (mit $block[0] würde ich auf den ersten zugreifen). Die Zeichenkombination “.=” sagt: “Hänge an diesen Textblock an das Ende noch etwas dran”, in meinem Fall eben der Adsense-Code der nach dem zweiten “</p>” ausgegeben werden soll.
  • Zeile 6: Nun muss man mit join die aufgesplitteten Textblöcke wieder zusammenfügen.
  • Zeile 7: Nur ein Kommentar, nicht wichtig
  • Zeile 8: Nicht wichtig
  • Zeile 9: Jetzt ist der Artikel fertig formatiert und kann ausgegeben werden

Jetzt wird bei mittleren und langen Artikeln nach dem zweiten-schliessenden P-Tag unser Adsense-Code ausgegeben, natürlich muss man nun ein wenig darauf achtgeben, wann man Abschnitte/Textblöcke in seinen Artikeln definiert. Jetzt wollen wir noch schnell für lange Artikel am Ende eine Adsense-Anzeige platzieren, dazu benutzen wir die PHP-Funktion “str_word_count” um herauszufinden ob der Artikel mehr als eine bestimmte Anzahl an Wörtern hat. Der Code dafür sieht so aus:

if(str_word_count($content) > 500)
$content .= 'Hier bitte den zweiten Adsense-Code einfügen';

Eure “the_content“-Funktion sollte nun so aussehen:

$content = get_the_content($more_link_text, $stripteaser, $more_file);
$content = apply_filters('the_content', $content);
//Hier können wir mit der Formatierung beginnen
$blocks = explode('</p>',$content);
$blocks[1] .= 'Hier bitte Adsense-Code einfügen';
$content = join('</p>',$blocks);
if(str_word_count($content) > 500)
$content .= 'Hier bitte den zweiten Adsense-Code einfügen';
//Hier endet die Formatierung
$content = str_replace(']]>', ']]&gt;', $content);
echo $content;

Der Nachteil
Es ist nun nicht mehr so einfach seine Ads zu tracken, also ob nun auf der index-Seite auf die Ads geklickt wurde oder auf der single-Seite. PHP-Kenner werden dieses Hindernis aber sicher auch ausräumen können.

Schreibt mir einen Kommentar wenn noch etwas nicht klar sein sollte, wenn ihr Fragen oder Kritik habt (davon gibt es sicherlich genug) oder auch Verbesserungsvorschläge.

Adsense, Wordpress, optimierung, PHP


Verwandte Artikel
  1. Adsense-CTR - Grenzen durch Layout und Zielgruppe
  2. Neues Adsense-Format und Channel-Erweiterung
  3. Adsense Injection - Plugin
  4. Eigenes Wordpress Template in wenigen Schritten - Schritt 6
  5. Fiese Adsense-Optimierung

am April 13, 2006 um 12:39 Uhr | in Allgemein, Geld verdienen | 7 Kommentare


7 Kommentare
  1. Julian, April 13, 2006:

    Danke, dass du dir so tief unter die Haube deines Blogs schauen lässt :)

    Sowas habe ich schon immer gesucht, werde es gleich versuchen.

  2. webmasterfind, April 13, 2006:

    Ich weiss nicht, ob du dir bereits AdsenseDeluxe ( http://www.acmetech.com/blog/adsense-deluxe/ ) für Wordpress angesehen hast. Das Einbinden in den Content ist watschen einfach. Und änderst du mal wie oben beschrieben das Design, können auch die Adsense Anzeigen leicht, mit wenigen Klicks geändert werden (egal ob Adsenseanzeigen auf einer oder mehreren hindert Seiten eingebunden sind).

    Ich verwende dieses Plugin für fast alle meine Blogs und es funktioniert tadellos. So hast du den Vorteil nicht im Core-Code etwas verändern zu müssen.

  3. Christian Strang, April 13, 2006:

    Ja doch, aber gerade das wollte ich nicht da man ja dann in den Content was einfügt. Es ist zwar als Kommentar deklariert, aber dennoch bin ich kein Freund dieser Methode. Die Variante die ich oben bespreche ist natürlich sehr unsauber gerade weil sie in den Core-Code eingreift, aber ich wollte hier eine Alternative Möglichkeit bieten für alle die ebenfalls nicht so gerne oben genanntes Plugin verwenden.

  4. Matthias, April 13, 2006:

    So, wie es jetzt da steht, wird auch bei den kurzen Beiträgen (Szenario 1) der Adsense-Code eingefügt. blocks[1] existiert nämlich auch dann, ist aber leer. Man müsste noch eine Abfrage einbauen: if (count($blocks)>2) ( = mehr als ein Absatz) dann Adsensecode.

  5. Christian Strang, April 13, 2006:

    Ja recht hast du, ich habe das gerade für mich persönlich mit einem zusätzlichen Word_count gelöst, also größer 100 Wörter. Werde in den nächsten Tagen noch einen zweiten Teil dazu rausbringen wenn ich selbst noch ein bisschen mehr rumgetestet habe.

  6. Thyno, März 9, 2008:

    Hallo,

    danke für die hilfreichen Tipps. Du hast mir sehr weiter geholfen.

    LG,

    Thyno aus D. an der E.

  7. Joe Fischler, Mai 15, 2008:

    Danke ebenso für die tollen Tipps - endlich konnte ich mir diesen Wunsch erfüllen.

    Übringens heißt die betreffende Datei unter WP 2.5 nun “post-template.php”.

Tut mir leid, die Kommentarfunktion für diesen Beitrag ist geschlossen.