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:
[sourcecode language=’php’]
$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, “/”, “.wp-magazin.info”);
$sevisitor=true;
}
}

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

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 “wp-magazin.info”, 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:

[sourcecode language=’php’]
if (function_exists(‘wpmag_fromasearchengine’)) {
if (wpmag_fromasearchengine()) {
PLATZHALTER FÜR HTML-/BANNER-CODE
}
}
[/sourcecode]

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.

22 Antworten auf „Werbe-Banner nur für Besucher von Suchmaschinen anzeigen“

  1. 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. 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. 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 🙂

  4. 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.

  5. 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 😉

    1. 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.

  6. 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.

  7. 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…

  8. 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.

  9. 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

  10. Danke für den Tipp. So lässt sich natürlich mit nen kleinen Trick vielleicht mehr verdienen. Der Vorteil ist ja das Stammbesucher die direkt kommen den “Keine Werbung” Bonus haben 😉

Schreibe einen Kommentar zu Macadelic Antworten abbrechen

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