Hauptseite

Werbung in WordPress nur für Google-Besucher um Smart Pricing zu vermeiden

18. April 2009 von zimon

Nach der Idee von Stephen Cronin (englisch), das Smart Pricing zu vermeiden, indem man nur noch Besuchern die Werbung zeigt, die von Suchmaschinen kommen habe ich das von mir verwendete WordPress Plugin AdSense Manager entsprechend angepasst. Es braucht nur die Datei adsense-manager.php editiert zu werden. Zuerst wird eine Funktion hinter den ganzen require- und include-Anweisungen definiert, die den Referrer checkt, ob der Besucher von einer Suchmaschine kommt (Direkt hinter den Kommentar mit “STANDARD OUTPUT FUNCTIONS”):

function fromasearchengine(){
  $ref = $_SERVER['HTTP_REFERER'];
  $SE = array('/search?', 'images.google.', 'web.info.com', 'search.', 'del.icio.us/search', 'soso.com', '/search/', '.yahoo.');
  foreach ($SE as $source) {
    if (strpos($ref,$source)!==false) return true;
  }
  return false;
}

Die Abfragen habe ich übernommen, es wird also auch Besuchern, die z.B. von der Delicious- oder Yahoosuche kommen die Werbung angezeigt. Als Nächstes sollte direkt unter der neu geschriebenen Funktion die Funktion adsensem_ad() definiert sein. Dort wird der gesammte Inhalt der Funktion in eine if-Abfrage eingeschlossen, die die neue Funktion abfragt. Bei mir sieht sie nun so aus:

//Kept external for backward compatibility
if(!function_exists('adsensem_ad')) {
    function adsensem_ad($name=false) {
        global $_adsensem;
        if(fromasearchengine()){
            if($name===false)
                {$ad=$_adsensem['ads'][$_adsensem['default-ad']];}
            else
                {$ad=$_adsensem['ads'][$name];}
            if(is_object($ad)){
                if($ad->show_ad_here()){
                    echo $ad->get_ad();
                    $ad->counter_click();
                }
            }
        }
    }
}

Nun muss nur noch die Funktion für das Widget angepasst werden. Auch hier wird der entsprechende Teil der Funktion nur ausgeführt, wenn die neue Funktion ergeben hat, dass der Besucher von einer Suchmaschine kommt. Die Function widget() sieht bei mir nun so aus:

// This is the function that outputs adsensem widget.
function widget($args,$n='') {
  // $args is an array of strings that help widgets to conform to
  // the active theme: before_widget, before_title, after_widget,
  // and after_title are the array keys. Default tags: li and h2.
  extract($args); //nb. $name comes out of this, hence the use of $n
  global $_adsensem;
 
  //If name not passed in (Sidebar Modules), extract from the widget-id (WordPress Widgets)
  if($n==''){ $n=substr($args['widget_id'],9); } //Chop off beginning adsensem- bit
  if($n!=='default-ad'){$ad = $_adsensem['ads'][$n];} else {$ad = $_adsensem['ads'][$_adsensem['default-ad']];}
 
  if(fromasearchengine()){
      if($ad->show_ad_here()){
        echo $before_widget;
        if($ad->title!=''){ echo $before_title . $ad->title . $after_title; }
        echo $ad->get_ad(); //Output the selected ad
        echo $after_widget;
        $ad->counter_click();
      }
  }
}

Das war es. Nun braucht nur noch gespeichert zu werden und die Werbung erscheint nur noch bei Suchmaschinenbenutzern.


Folgende Beiträge könnten Dich auch interessieren:

Schlagworte: , ,



Kommentieren

Kommentarlinks könnten nofollow frei sein.


Bloggeramt.de frisch gebloggt Blogverzeichnis - Blog Verzeichnis bloggerei.de