Blog

Werbe-Banner nur für Besucher von Suchmaschinen anzeigen

Ich bin bei WpRecipes auf einen interessanten Artikel zum Thema “AdSense-Anzeigen” gestoßen. Viele Blog-Betreiber möchten ja durch die Textanzeigen von Google monatlich ein paar Werbeeinnahmen generieren, um die Hosting-Kosten zu decken.

An sich völlig verständlich, andererseits stören die Textanzeigen oder ganz allgemein Werbebanner auch viele Leser und sicherlich auch viele Blog-Betreiber. Durch diese Funktion von WpRecipes lässt sich das Einblenden von Werbeanzeigen – speziell auch von AdSense-Anzeigen – ein wenig eingrenzen. Das Skript sorgt dafür, dass nur Besucher, die über eine Suchmaschine auf die Seite gelangt sind, eine Anzeige angezeigt bekommen. Alle anderen Besucher, also Leute, die das Blog direkt aufgerufen haben – über ein Bookmark oder den RSS-Feed – sehen keine Anzeigen und können ungestört die Artikel lesen.

Wer sich viel mit Online-Marketing bzw. mit der Google-AdSense-Technologie beschäftigt, weiß, dass vor allem Besucher, die über Suchmaschinen auf eine Webseite gelangen, auch auf Anzeigen klicken. Das geschieht meist dann, wenn der Besucher nicht fündig geworden ist und eine Textanzeige, die zum gefundenen Artikel bzw. Content passt, eine “bessere” Antwort liefern könnte. Die bis dato generierten Werbeeinnahmen sollten sich also nicht verringern. Im Gegenteil: Durch Google’s SmartPricing-Technologie und die durch das Skript verursachte bessere Klickrate auf die Anzeigen (die Impressionen der Anzeigen sinken ja, wenn sie nicht mehr jedem Besucher gezeigt werden), sollte sich der eCPM und damit die Gesamteinnahmen sogar verbessern lassen.

Soweit zur Theorie, hier die Praxis:

1. functions.php im Theme-Ordner anpassen:

$ref = $_SERVER['HTTP_REFERER'];
$SE = array('/search?', 'images.google.', 'search.', 'del.icio.us/search', '/search/', '.yahoo.');
foreach ($SE as $source) {
if (strpos($ref,$source)!==false) {
setcookie("sevisitor", 1, time()+3600, "/", ".wordpress-magazin.de");
$sevisitor=true;
}
}

function wpmag_fromasearchengine(){
global $sevisitor;
if ($sevisitor==true || $_COOKIE["sevisitor"]==1) {
return true;
}
return false;
}

Was passiert hier? Eigentlich ganz einfach: Das Skript liest den Referer des Besuchers aus und achtet dabei auf bestimmte Teile in der URL. Diese stehen im Array $SE. Wer also weitere Suchmaschinen oder Seiten dazunehmen möchte, der kann das Array einfach erweitern. Der Code oben sorgt dafür, dass der Wert “true”, also “wahr” zurückgegeben wird, wenn der Besucher von Google, inkl. der Google-Bildersuche, von del.icio.us oder von Yahoo und anderen Seiten die in der URL “search” enthalten auf die Seite gelangt. Wenn das nicht der Fall ist, wird der Wert “false” bzw. “falsch” zurückgegeben.

Außerdem setzt das Skript ein Cookie mit dem Namen “sevisitor” beim Benutzer, wodurch verhindert wird, dass bei einem Reload der Seite oder beim Navigieren auf dem Blog plötzlich keine Anzeigen mehr erscheinen (der Referer ändert sich ja dann). Die Cookie-Laufzeit beträgt dabei 3600 Sekunden, also 10 Minuten – danach ist das Cookie nicht mehr gültig und die Werbe-Anzeigen würden verschwinden. Wer für Besucher von Suchmaschinen längere Besuchszeiten auf der Webseite verzeichnet, sollte diesen Wert entsprechend erhöhen.
Die URL “wordpress-magazin.de”, die in der “setcookie”-Zeile am Ende steht, muss unbedingt noch an die eigene Domain angepasst werden, damit es funktioniert.

Übrigens sollte darauf geachtet werden, dass in der Datei functions.php noch “< ?php” bzw. “? >” (ohne die Leerzeichen vor und nach dem Fragezeichen) am Anfang und am Ende der Funktion ergänzt werden muss, wenn die Datei functions.php bisher leer ist. Sonst bekommt man eine Fehlermeldung.

2. In den verschiedenen Theme-Dateien, in denen man den Banner-Code (Javascript-Code) von AdSense eingebaut hat, ergänzt man dann noch folgenden Code:

if (function_exists('wpmag_fromasearchengine')) {
if (wpmag_fromasearchengine()) {
PLATZHALTER FÜR HTML-/BANNER-CODE
}
}

An die Stelle “PLATZHALTER FÜR BANNERCODE” kommt dann der eigentliche Bannercode – egal ob AdSense oder ein anderer Javascript-Code. Theoretisch kann man hier auch beliebigen anderen (HTML-)Code einsetzen, beispielsweise ein Bild oder einen Text, den nur Besucher von Suchmaschinen angezeigt bekommen sollen.

Achtung: Beim Einbau in Theme-Dateien wie die single.php oder die sidebar.php muss noch die richtige PHP-Syntax für den obigen Code beachtet werden (man beachte die roten php-Tags):

php-syntax_fromasearchengine

Jeder möge dieses Skript bitte auf eigene Gefahr einsetzen. Auch die Annahme, dass sich die Werbeeinnahmen über AdSense dadurch steigern lassen, ist nur eine unbestätigte Theorie. Fragen und Meinungen dazu können gern wieder über die Kommentar-Funktion diskutiert werden.

21 Kommentare

  1. Frank am 9. Januar 2009 um 00:05

    Kleine Ergänzung um die Änderung der URL zu sparen. WordPress kennt ja die URL und daher muss man nur das http:// filtern.
    setcookie( 'sevisitor', 1, time()+3600, '/', str_replace( 'http://', '', get_bloginfo('url') ) );

  2. Ben am 9. Januar 2009 um 08:37

    Hey,

    dazu gibt ea auch soweit ich weiß Plugins die das realisieren.
    Gerade für Einsteiger ist es sehr schwer und nicht jeder kommt damit klar.

    Aber denoch eine gute und leicht zu verstehende Anleitung.

    LG

  3. FirstDayBlack am 9. Januar 2009 um 11:48

    Wer sich damit nicht rumschlagen möchte kann ja auch das Plugin “Who sees ads” verwenden, das auch noch einige Einstellmöglichkeiten mehr bietet.

  4. Simon am 9. Januar 2009 um 11:50

    Klar, gibt es dafür jede Menge Plugins. Und diese sind für den Einsteiger sicherlich auch besser – das stimmt. Der fortgeschrittene WordPress-User sollte aber versuchen, aus Performance-Gründen möglichst wenig Plugins einzusetzen. Da kommen solche “Rezepte” natürlich wie gerufen :-)

  5. FirstDayBlack am 9. Januar 2009 um 11:56

    Ja, schon. Aber dieser Code-Schnipsel ist ja auch nichts anderes als ein in die Template-Dateien verlegtes Plugin. Das Problem entsteht dann beim Theme-Wechsel oder Theme-Update. Dann ist die ganze Customization plötzlich futsch und man fängt an, alle Änderungen manuell nachzupflegen. Wenn man sich überhaupt noch an alle erinnern kann.

  6. Fermodes am 9. Januar 2009 um 13:13

    Hi Thomas. Im Prinzip eine tolle Sache, allerdings finde ich den Umweg über ein Cookie etwas umständlich. Ich denke eine einfache Referer-Abfrage um den Werbeblock herum sollte das gleiche Ergebnis bringen. Aber wie so oft führen viele Wege nach Rom – vielleicht findet sich einer der aktiven User und bastelt aus der von Dir vorgestellten Lösung ein installierbares Plugin – da würden sich sicherlich einige freuen – vor allem die, die um PHP-Code lieber einen Bogen machen ;-)

  7. Thomas Langel am 9. Januar 2009 um 13:19

    Hallo Fermodes,

    das Skript überprüft ja den Referer. Das Cookie wird nur gesetzt, damit der Benutzer 10 Minuten lang weiterhin Banner angezeigt bekommt, wenn er auf der Seite weiter navigiert – im Endeffekt bleibt der Besucher ja für die Zeit des Webseiten-Aufrufs ein Besucher, der über Suchmaschinen auf die Seite gelangt ist. Und somit soll er auch auf anderen Seiten die Anzeigen sehen. Durch die Cookie-Laufzeit von 10 Minuten bekommt der Nutzer aber nach einem zweiten Besuch (durch ein Bookmark oder durch direkte Eingabe der URL in die Adressleiste) keine Anzeigen mehr.

  8. Ben am 9. Januar 2009 um 15:23

    Landingsites Plugin von Frank Bültge kann man dazu auch nehmen. ;)

    LG

  9. Jared am 9. Januar 2009 um 19:23

    Es gibt für jeden kleinen Sch… irgendwelche Plugins ;-) aber grade das oben erklärte Beispiel zeigt wiedermal deutlich das man mithilfe einiger kleiner Codeschnipsel genausoviel erreichen kann wie mit einem Plugin.

    PS: Der Beitrag ist imho sehr gut geschrieben. Ich denke da steigt selbst der Anfänger durch.

  10. Bene am 10. Januar 2009 um 14:37

    Was gibt es da für Plugins? hab jetzt eine weile gegoogelt, aber nix brauchbares gefunden…und das Code-Schnipsel ist für mich als Anfänger wohl doch etwas zu komplex…

  11. Thomas Langel am 10. Januar 2009 um 15:08

    @Bene,

    hier zum Beispiel: http://planetozh.com/blog/my-projects/wordpress-plugin-who-sees-ads-control-adsense-display/

  12. Plugin oder Codeschnipsel? - Plugin, Wordpress, Blog - FirstDayBlack am 11. Januar 2009 um 12:06

    [...] WordPress-Magazin zeigt ein einem interessanten Artikel, wie man Werbebanner nur für Besucher von Suchmaschinen anzeigen lassen kann. Dazu werden ein paar Zeilen PHP-Code per Hand in die Theme-Dateien eingefügt. [...]

  13. Banner nur für Suchmaschinenbesucher anzeigen | seit1986 am 11. Januar 2009 um 18:53

    [...] via [...]

  14. Thomas Langel am 15. Januar 2009 um 22:00

    Endlich konnte ich den Kommentar (Nr. 1) von Frank freischalten – leider fehlte mir bis dato die Berechtigung dazu. Der Hinweis von Frank ist super, da man so die manuelle Anpassung des Skripts komplett umgehen kann und das Cookie automatisch auf die URL des Blogs angepasst wird.

    Danke @Frank und Sorry, dass die Genehmigung so lange gedauert hat.

  15. Linktipps der Woche: Gefunden im Netz - KW03/2009 | myCampbell.de - Das Campbell-Zwerghamster Blog am 16. Januar 2009 um 08:14

    [...] Werbung im Blog nur für Besucher von Suchmaschinen [...]

  16. Macadelic am 9. Februar 2009 um 18:51

    Mal anders gedacht: Könnte man das Script mit ein paar Modifikationen für Google-Bots bestimmte Inhalte (ich denke da an verkauften Textlinks) unsichtbar machen?

  17. Thomas Langel am 9. Februar 2009 um 19:25

    Hallo Macadelic,

    ja, könnte man, aber das verstößt gegen den Punkt “Verborgener Text / Verborgene Links” bzw. “Cloaking” der Google-Richtlinien für Webmaster. Am Ende also sicher nicht im Sinne der beiden Linktauschpartner.

  18. Macadelic am 10. Februar 2009 um 07:49

    @Thomas

    Das Argument mit den Linktauschpartnern stimmt natürlich.

  19. hombertho am 4. März 2009 um 17:14

    Ich finde die Lösung echt mal genial. Ich hatte vorher eine Funktion, die zwar auf der ersten Seite von google Werbung angezeigt hatte, aber bei der zweiten Seite war sie schon wieder weg. Da ist das mit den Cookies schon besser gelöst. Who see Ads finde ich ist nicht eine richtige Alternative. Da hatte ich auch oft das Problem, dass die Werbung nur auf der Einstigsseite angezeigt wurde.
    Viele Grüße
    Thomas

  20. alte kiehvoz am 11. August 2009 um 17:03

    Vielen Dank für den Code. Ich habe ihn nicht für Werbeanzeigen benutzt, sondern etwas umgebaut und in einen Frame-Breaker integriert. Funktioniert wunderbar.

    Besten Dank,

    Gruß alte Kiehvotz

  21. Rico am 3. Dezember 2009 um 12:41

    Hey,
    danke für deine Hilfe – so spar ich mir wieder ein Plugin, welches wieder unnötige DB-Einträge anlegen würde. :D
    Danke dir!

    Gruß,
    Rico

Kommentar schreiben




Newsletter & Updates

Trag' Dich ein, um die neuesten Artikel per E-Mail zu erhalten!

Die letzten Kommentare

  • dirk: Das ganze ist extremst praktisch muss ich sagen! Die Seiten die man damit aufbaut sind besser geordnet und es...
  • Chris: Hmmm… also ich hatte bisher immer den entgegengesetzten Effekt. Immer wenn ich Themes gesucht habe, fand...
  • Obertauern: Vielen Dank für diesen wirklich hilfreichen Artikel, ich habe schon oft versucht xammp zu installieren,...
  • Rhein Neckar Kreis: Ich sage mal Danke an die Wordprss Macher, je mehr “kleine” es nutzen und die Plugins...
  • Marcel: Es gibt dafür ein Plugin, nennt sich Page Link Manager. Einfacher gehts nun wirklich nicht mehr.

    Feedleser

    • Gesamt: 1150 (Letzten 31 Tage)
    • Maximum: 342 (6. March 2010)
    • Durchschnitt: 37