perun.net – WordPress & Webwork



WordPress: AdSense & Co. nur in älteren und langen Artikeln

Von am 16. 05. 2012 um 15:46 – Aktualisiert am 30. 07. 2013 um 21:52

Wie man Werbeblöcke (zum Beispiel AdSense) nur in älteren und längeren Artikeln einbindet.

Google AdSense Das es unter Umständen sinnvoll sein kann, die Werbung von Stammlesern zu "verstecken" – also in älteren Artikeln und/oder für Suchmaschinen-Besucher anzuzeigen – habe ich bereits in mehreren Artikeln erwähnt (hier, hier und hier). Dabei habe ich als Lösungsansatz immer das WordPress-Plugin Who See Ads erwähnt, da man damit Abfragen generieren kann: Bin ich ein alter Artikel?, Komme ich von einer Suchmaschine? etc.

Was aber das Plugin nicht kann, ist die Prüfung der Artikellänge. Ich persönlich denke, es ist nicht nicht nur sinnvoll bestimmte Werbeblöcke, wie zum Beispiel AdSense, nur in älteren Artikeln einzubinden, diese Artikel sollten auch eine gewisse Länge aufweisen, damit die Werbung in einem sinnvollen Verhältnis zum Inhalt (Artikel und Kommentare) steht.

Folgendermaßen könnte man so etwas erreichen. Den folgenden Code…

// Wörter zählen für Werbeblock
function woerter_zaehlen(){
ob_start();
the_content();
$inhalt = ob_get_clean();
return sizeof(explode(" ", $inhalt));
}

// Alter Artikel
function alter_artikel($post_id=null){
   $tage = 10;
   global $wp_query;
   if(is_single()) {
      if(!$post_id) {
         $post_id = $wp_query->post->ID;
      }
      $aktuelle_zeit = time();
      $zeitabstand = $tage *86400;
      $post_id = get_post($post_id);
      $artikel_datum = mysql2date('U',$post_id->post_date);
      $pruefung = $artikel_datum + $zeitabstand;
      $test = $aktuelle_zeit - $pruefung;
      if($test > 0){
         $return = true;
      }else{
         $return = false;
      }
   }else{
      $return = false;
   }
   return $return;
}

… in die functions.php einbinden. Anschließend die single.php öffnen – diese Template-Datei ist zuständig für die Ausgabe der einzelnen Artikel – und dort an der gewünschten Stelle, zum Beispiel vor oder nach dem Artikel, folgendes einbinden:

<?php if(alter_artikel() and woerter_zaehlen()> 300){ ?>
Bannercode...
<?php } ?>

Damit erreichst du, dass die Werbeblöcke nur in Artikeln erscheinen die älter als 10 Tage sind und die mindestens 300 Wörter lang sind. Selbstverständlich kannst du die Angaben zum zeitlichen Abstand und für die benötigte Artikellänge an deine Bedürfnisse anpassen.

Gefunden habe ich die beiden Code-Fragmente auf www.wprecipes.com (hier und hier). Ob das allerdings die originale Quelle ist, kann ich nicht sagen, da einige Blogs im englischsprachigen Raum gerne mal vergessen den originalen Verfasser zu erwähnen.

Nachtrag: Thomas Scholz hat mich auf Google+ angesprochen und darauf hingewiesen, dass man das ganze auch etwas effektiver umsetzen kann.

Daher habe ich jetzt auf den zweiten Code-Block in der functions.php, der das Alter des Artikels bestimmt, verzichtet und momentan schaut die Abfrage in der single.php so aus:

<?php if(woerter_zaehlen()> 300 and (time() - (10 * 86400) > get_the_date('U'))) { ?>
Bannercode...
<?php } ?>

Diesen Artikel weiterempfehlen:

Premium WordPress Themes

Verwandte Artikel:

 — 


7 Kommentare

  1. 1.Tom

    Kommentar vom 16.05.2012 um 15:57

    Die Aufteilung finde ich auch sehr sehr wichtig, ansonsten würden einige Artikel sehr unseriös rüberkommen.

  2. 2.Lars Mielke

    Kommentar vom 16.05.2012 um 17:16

    Als Ergänzung zu einer Plugin-Lösung: Ad Injection kann den Adsense Werbeblock sowohl aufgrund der Artikellänge als auch des Veröffentlichungsdatums (sprich Alter des Artikels) einbinden oder auch nicht.
    http://wordpress.org/extend/plugins/ad-injection/
    Generell bin ich am Überlegen, ob in Zeiten von Werbeblockern die Trennung von alte Artikel – neue Artikel aufrechterhalten werden sollte.

  3. 3.Daniel

    Kommentar vom 16.05.2012 um 21:58

    Sollte die Werbung nicht einfach so eingebunden sein, dass sich sowohl der Stammleser als auch der "Neuling" nicht unwohl fühlt. Ich will ja schließlich möglichst viel Google Traffic zu Stammlesern machen.

  4. 4.Vladimir

    Kommentar vom 17.05.2012 um 13:40

    @Daniel,

    ich habe auch nirgendwo geschrieben, dass du du die Suchmaschinenbesucher mit übermäßigen Werbung traktieren sollst. Es gehtviel mehr darum das es Werbeformen gibt, die eher für Stammleser geeignet sind (z. B. Buchrezensionen) und andere wie AdSense eignen sich eher für Suchmaschinenbesucher.

  5. 5.Kriesi

    Kommentar vom 25.05.2012 um 10:54

    Nette Idee :) Die Wörter Zählen Funktion kann man allerdings auch noch gut abkürzen:

    function woerter_zaehlen(){
    return str_word_count(get_the_content());
    }

  6. 6.Vladimir

    Kommentar vom 25.05.2012 um 11:03

    @Kriesi,

    wenn ich Thomas Scholz glauben soll ist str_word_count() keine gute Lösung:

    PHP: Wörter zählen

    da dort Probleme mit Zahlen, Bindestrichen und utf8 auftreten.

  7. 7.Kriesi

    Kommentar vom 25.05.2012 um 11:08

    Hm interessant, wusste ich ned :)

    Allerdings würds ichs bei einer funktion wie hier wohl trotzdem einsetzten da es nicht wirklich relevant ist ob das ding am ende 3 wörter daneben liegt ;D

    Das tuts natürlich auch:

    function woerter_zaehlen(){
    return sizeof( explode( " ", get_the_content() ) );
    }

Hinweis:
Kostenloser WordPress-Newsletter
Wöchentl. Newsletter zu WordPress und verwandten Themen

Tut mir Leid, aber die Kommentar-Funktion ist momentan deaktiviert.



Weblog der perun.net webwork gmbh mit Artikeln zum Thema WordPress, Webwork, und Internet.