WordPress – Sponsored Posts und Affiliate-Links als Werbung kennzeichnen

just-yum-yum-bloggerwissen-6

In diesem Artikel erfährst Du, wie Du in WordPress mit ein paar Zeilen PHP-Code Deine Sponsored Posts und Affiliate-Links als Werbung kennzeichnen kannst.

Sowohl hier auf BLOGGERWISSEN als auch auf meinen anderen Webpräsenzen JUST YUM YUM Foodblog und JUST YUM YUM Kitchen findest Du den einen oder anderen bezahlten Blogpost, einen sogenannten Sponsored Post, und/oder Provisionslinks, auch als Affiliatelinks bekannt.

Und auf allen meinen Plattformen gehe ich offensiv und transparent mit dem Thema bezahlter Werbung und Provisionslinks um. Deshalb gilt für mich immer und überall:

Immer alle Sponsored Posts und Affiliate-Links als Werbung kennzeichnen.

Grundsätzlich gibt auf den Plattformen BLOGGERWISSEN und JUST YUM YUM Foodblog folgende Arten von Artikeln, über die ich Einnahmen erziele:

  • Artikel als bezahlte Werbung mit Provisionslinks
  • Artikel als bezahlte Werbung
  • Artikel mit Provisionslinks

JUST YUM YUM Kitchen nimmt hierbei eine Sonderstellung ein, da es sich bei diesem Onlineshop um einen reinen Affiliate-Shop handelt.

Noch eine letzte Bemerkung bevor es losgeht: Bitte verstehe diese Artikel nicht als rechtliche Beratung! Ich gebe hier ausschließlich meine eigene Meinung und Ansicht zu diesem Thema wider.

Bezahlte Blogposts und Affiliate-Links

Unabhängig davon, wie mein persönliches Setup aussieht: Wer bezahlte Artikel auf seinem Blog veröffentlicht, ist verpflichtet, diese Artikel als Werbung zu kennzeichnen und seine Leser frühzeitig auf deren werblichen Charakter aufmerksam zu machen.

Eine Kennzeichnung mit Sponsord Post, Sponsored by oder einfach nur Ad gilt übrigens als nicht ausreichend. Es muss entweder der Begriff Werbung oder Anzeige verwendet werden.

Auf gängigen Rechtsberatungsseiten werden zum Thema Kennzeichnungspflich in aller Regel die folgenden drei Gesetzestexte angeführt:

Kommerzielle Kommunikationen müssen klar als solche zu erkennen sein.

§6 Telemediengesetz, Absatz 1, Nummer 1

Werbung muss als solche klar erkennbar und vom übrigen Inhalt der Angebote eindeutig getrennt sein. In der Werbung dürfen keine unterschwelligen Techniken eingesetzt werden.

§58 Rundfunkstaatsvertrag, Absatz 1

Unzulässige geschäftliche Handlungen im Sinne des § 3 Abs. 3 sind

11. der vom Unternehmer finanzierte Einsatz redaktioneller Inhalte zu Zwecken der Verkaufsförderung, ohne dass sich dieser Zusammenhang aus dem Inhalt oder aus der Art der optischen oder akustischen Darstellung eindeutig ergibt (als Information getarnte Werbung);

§3 Gesetz gegen den unlauteren Wettbewerb, Absatz 3 in Verbindung mit Nummer 11 des Anhangs

Während die Kennzeichnungspflicht bei bezahlten Blogposts damit mehr als eindeutig geklärt sein dürfte, ist es die Lage bei Provisionslinks (noch) nicht dermaßen eindeutig.

Da ich, wie schon gesagt, grundsätzlich mit dem Thema Werbung offensiv auf meinen Webseiten umgehe und mich lieber auf der (halbwegs) sicheren Seite wähne, kennzeichne ich auch immer meine Provisionslinks.

Werbung und Affiliatelinks in WordPress kennzeichnen

Auch wenn die rechtliche Situation grundsätzlich klar sein sollte, stellt sich für viele Blogger immer noch die Frage: „Wie kann ich auf technischer Ebene meine Sponsored Posts und Affiliate-Links als Werbung kennzeichnen?“

Nachdem sich mein erster Ansatz mit einem Shortcode im Laufe der Zeit – spätestens aber mit der Einführung von Gutenberg als neuen Texteditor in WordPress – als sehr umständlich herausgestellt hat, habe ich jetzt eine wesentlich praktischere Lösung implementiert.

Seit einiger Zeit verwende ich jetzt stattdessen Metaboxen in der Sidebar meines Artikeleditors , um die Kennzeichungen zu ermöglichen.

Und so gibt es jetzt sowohl zur Kennzeichung von bezahlten Posts als Werbung als auch für die Affiliate-Links eine eigene Metabox.

Sponsored Posts und Affiliate-Links als Werbung kennzeichnen - getrennte Meta-Boxen für Provisionslinks (Affiliate Links) und Kooperationen (Sponspred Posts)


Provisionslinks

Das es hier nur ein „Ja“ oder „Nein“ gibt, ist die Metabox für den Hinweis auf die Provisionslinks denkbar simpel aufgebaut. Mehr als eine Checkbox zur Aktivierung des Hinweises braucht es hier deshalb nicht.

Werbung

In der Metabox für den Werbehinweis existiert ebenfalls eine Checkbox, mit der sich der Hinweis grundsätzlich aktivieren lässt. Wenn nötig oder gewünscht, lässt sich noch der Name des Kooperationspartners hinterlegen.

Je nach Kombination der Häkchen und ob für den Kooperationspartner eine Name hinterlegt wurde, steuert sich dann die inhaltliche Ausgabe der Hinweise. Wie das genau funktioniert, erkläre ich Dir im Laufe dieses Artikels.

Weniger ist mehr!

Um meine Leser nicht sofort mit einem riesigen Info-Bereich zu erschlagen, habe mich dafür dafür entschieden, die Hinweise aufzuteilen.

Unmittelbar oberhalb des Artikels erscheint deshalb ein kurzer Hinweis, dass es sich bei diesem Artikel um Werbung handelt und/oder Affiliate-Links enthält.

Vollständiger Werbehinweis sowie Hinweis auf Affiliatelinks unmittelbar am Anfang eines Artikels
Vollständiger Werbehinweis sowie Hinweis auf Affiliatelinks unmittelbar am Anfang eines Artikels.

Die ausführlichen Informationen platziere ich dann am Ende des betreffenden Artikels, der über einen Ankerlink aus dem oberen Hinweis angesprungen werden kann.

Ausführliche Beschreibung zum Werbehinweis sowie zu den Affiliate-Links am Ende eines Artikels.
Ausführliche Beschreibung zum Werbehinweis sowie zu den Affiliate-Links am Ende eines Artikels.

Wie Du die Kennzeichnung mit Hilfe von Meta-Boxen mit nur ein paar Zeilen PHP-Code in Deine Artikelerstellung einbindest, zeige ich Dir im folgenden Artikel.

Ich verwende für 99,99% aller meiner Anpassungen das WordPress-Plugin Code Snippets von Shea Bunge. Ich kann Dir nur dringend anraten, Dir dieses Plugin ebenfalls zu installieren, falls Du es nicht ohnehin schon getan hast.

Meta-Boxen anlegen

Das Anlegen von Meta-Boxen ist ein zweistufiger Prozess. Zunächst musst Du über eine add_action-Anweisung und den Action-Hook add_meta_boxes().

add_action('add_meta_boxes','add_meta_advert_boxes');

Diesen Action-Hook verknüpfst Du mit einer PHP-Funktion, die wiederum die gewünschten Meta-Boxes erzeugt.

In dieser Funktion definierst Du nun mit add_meta_box() jede einzelne Meta-Box, die Du für die Kennzeichnung benötigst.

Die Eigenschaften einer Meta-Box werden über Parameter definiert. Diese Definition folgt dabei immer dem gleichen Muster:

add_meta_box($id,$title,$callback,$screen,$context,$priority,$callback_args);

Im Nachfolgenden erkläre ich Dir die einzelnen Parameter der Funktion am Beispiel der Meta-Box für die Affiliate-Links:

add_meta_box('comissions-box-id','Provisionslinks','meta_comissions_box','post','side','high');
  • $id – wird im ‚id‘-Attribut der Meta-Box verwendet: comissions-box-id
  • $title – Titel der Meta-Box: Provisionslinks
  • $callback – Funktion, die die Box mit dem gewünschten Inhalt füllt: meta_comissions_box
  • $screen – Seitentypen, auf denen die Meta-Box angezeigt werden soll: post
  • $context – Der Kontext innerhalb der Seite, auf dem die Box angezeigt werden soll: side
  • $priority – Die Priorität innerhalb des Kontexts, in dem die Box angezeigt werden soll: high

Auf den Parameter $callback_args kannst Du an der Stelle verzichten, da Du ihn für Deine Meta-Boxen nicht benötigst. Grundsätzlich dient $callback_args dazu, Daten an die Callback-Funktion zu übergeben, die im $callback-Parameter definiert wurde.

Die Meta-Box für den Werbehinweis legst Du genauso an, jedoch mit abweichenden Parametern für $id, $title und $callback.

add_meta_box('cooperations-box-id','Kooperation','meta_cooperations_box','post','side','high');

Am Ende sollte Deine fertige Funktion so aussehen:

function add_meta_advert_boxes(){
	add_meta_box('comissions-box-id','Provisionslinks','meta_comissions_box','post','side','high');
	add_meta_box('cooperations-box-id','Kooperation','meta_cooperations_box','post','side','high');
}

Allerdings wird jetzt noch nicht viel passieren, da diesen Metaboxen noch etwas Entscheidendes fehlt: die jeweiligen Callback-Funktionen.

Im Fall dieses Beispiels sind das die Funktionen meta_comissions_box und meta_cooperations_box, die Du jetzt noch anlegen musst.

Den Metaboxen Inhalte geben

Um die den neuen Metaboxen nun noch einen Inhalt zu geben, musst Du in zwei weiteren Funktionen noch definieren, mit welchen Inhalten die jeweiligen Meta-Boxen befüllt werden sollen.

Für die Meta-Box Provisionslink benötigst Du

  • ein input-Element vom Typ checkbox und
  • ein dazugehöriges label-Element.

Für die Meta-Box Kooperation benötigst Du

  • ein input-Element vom Typ checkbox,
  • ein dazugehöriges label-Element sowie
  • ein input-Element vom Typ text.

Das HTML-Gerüst für die Meta-Box Kooperation könnte dann beispielsweise so aussehen:

echo ('
<input type="checkbox" id="meta_cooperations_box_check" name="meta_cooperations_box_check"'. checked($meta_cooperations_box_checked, 'on', false) .'/>
<label for="meta_comissions_box_check">Dieser Beitrag enhält Werbung.</label>				
<input style="width:100%" placeholder="Name des Kooperationspartner" type="text" id="meta_cooperations_box_partner" name="meta_cooperations_box_partner" value="' . $meta_cooperations_box_partner . '"/>
');

Innerhalb des HTMLs findest Du zwei Variablen: $meta_cooperations_box_checked und $meta_cooperations_box_partner.

Diese beiden Variablen dienen dazu, eventuell zuvor gespeicherte Werte für die beiden input-Elemente in diesen auch wieder sichtbar zu machen.

Um diese Prüfung auf gespeicherte Werte machen zu können, musst Du Dir über die WordPress-Funktion get_post_custom() zunächst die gesamten Customs Fields des jeweiligen Artikels holen und in eine Variable schreiben, hier $meta_comissions_box_values.

Wenn Du Dir den Inhalt dieser Variable über print_r() ausgeben lässt, würdest Du ein multidimensionales Array erhalten, das in etwa so aussehen kann:

Array (
[_edit_lock] => Array ( [0] => 123456789:1 )
[_edit_last] => Array ( [0] => 123 )
[_yoast_wpseo_primary_category] => Array ( [0] => 123 )
[_yoast_wpseo_content_score] => Array ( [0] => 123 )
[_thumbnail_id] => Array ( [0] => 123 )
[meta_comissions_box_check] => Array ( [0] => on )
[meta_cooperations_box_check] => Array ( [0] => on )
[meta_cooperations_box_partner] => Array ( [0] => JUST YUM YUM Kitchen )
)

Über dieses Array kannst Du nun prüfen, ob zum einen eine Checkbox angehakt wurde, der Wert einer Checkbox also on entspricht, und ob der Name eines Partners angegeben worden ist.

Als Beispiel die Überprüfung, ob der Name des Partners gespeichert wurde:

if(isset($meta_cooperations_box_values['meta_cooperations_box_partner'])){
	$meta_cooperations_box_partner = esc_attr($meta_cooperations_box_values['meta_cooperations_box_partner'][0]);
	} else {
		$meta_cooperations_box_partner ='';
		}

Mit der PHP-Funktion isset überprüfe ich zunächst, ob (if) das Array-Element [meta_cooperations_box_partner] in der Variablen $meta_cooperations_box_values existiert.

Ist dies der Fall, wird der Wert des Array-Elements mit dem Index 0, also der erste vorkommende Wert überhaupt, in die Variable $meta_cooperations_box_partner geschrieben. Ansonsten (else) bleibt die Variable $meta_cooperations_box_partner leer.

Die Variable $meta_cooperations_box_partner verwende ich anschließend im HTML weiter, um den eventuell gespeicherten Wert in der Meta-Box anzuzeigen.

Checkboxen überprüfen

Die Prüfung der Checkboxen folgt dem gleichen Prinzip.

if(isset($meta_comissions_box_values['meta_comissions_box_check'])){
		 $meta_comissions_box_checked = esc_attr($meta_comissions_box_values['meta_comissions_box_check'][0]);
		} else {
			$meta_comissions_box_checked ='';
		}

Wurde die Checkbox zuvor angehakt, wurde dafür in $meta_comissions_box_values[‚meta_comissions_box_check‘][0] der String on abgelegt. Diesen String schreibe ich dann in die Variable $meta_comissions_box_checked. Anderfalls bleibt auch diese Variable leer.

Allerdings unterscheidet sich hier die anschließende Ausgabe im HTML.

Denn hier verwende ich Funktion checked(), die WordPress eigens für Checkboxes und Radio Buttons zur Verfügung stellt. checked() vergleicht zwei gegebene Werte und fügt, falls die Werte identisch sind, dem Radio Button oder der Checkbox das HTML-Attribut checked hinzu.

checked($meta_comissions_box_checked,'on',false)

In meinem Code-Beispiel vergleicht die Funktion checked() den Inhalt der Variablen $meta_comissions_box_checked mit meinem vorgebenen Wert ‚on‘.

Wurde die Checkbox in der Metabox zuvor angehakt, so entspricht der Inhalt von $meta_comissions_box_checked dem Wort on und ist somit identisch mit dem Vergleichswert.

Die Checkbox erhält also das Attribut checked und erscheint bei nächsten Artikelaufruf als angehakt.

Meta-Box Affiliate-Links

function meta_comissions_box($post)	{
	$meta_comissions_box_values = get_post_custom( $post->ID );
	if(isset($meta_comissions_box_values['meta_comissions_box_check'])){
		 $meta_comissions_box_checked = esc_attr($meta_comissions_box_values['meta_comissions_box_check'][0]);
		} else {
			$meta_comissions_box_checked ='';
		}
	wp_nonce_field('meta_box_noncecombined','meta_advert_boxes_nonce' );
	echo (	'<input type="checkbox" id="meta_comissions_box_check" name="meta_comissions_box_check"'. checked($meta_comissions_box_checked,'on',false) . '/>
			<label for="meta_comissions_box_check">Dieser Beitrag enhält Provisionslinks.</label>
			');
} // close function

Meta-Box Kooperation

function meta_cooperations_box($post)	{
	$meta_cooperations_box_values = get_post_custom( $post->ID );
	if(isset($meta_cooperations_box_values['meta_cooperations_box_check'])){
		$meta_cooperations_box_checked = esc_attr($meta_cooperations_box_values['meta_cooperations_box_check'][0]);
		} else {
			$meta_cooperations_box_checked ='';
		}
	if(isset($meta_cooperations_box_values['meta_cooperations_box_partner'])){
		$meta_cooperations_box_partner = esc_attr($meta_cooperations_box_values['meta_cooperations_box_partner'][0]);
		} else {
			$meta_cooperations_box_partner ='';
		}	
	wp_nonce_field('meta_box_noncecombined','meta_advert_boxes_nonce');
	echo ('	<input type="checkbox" id="meta_cooperations_box_check" name="meta_cooperations_box_check"'. checked($meta_cooperations_box_checked, 'on', false) .'/>
			<label for="meta_comissions_box_check">Dieser Beitrag enhält Werbung.</label>				
			<input style="width:100%" placeholder="Name des Kooperationspartner" type="text" id="meta_cooperations_box_partner" name="meta_cooperations_box_partner" value="' . $meta_cooperations_box_partner . '"/>');
} // close function

Die Inhalte der Meta Boxen speichern

Um Deine Eingaben in den Metaboxes zu speichern, musst Du nun noch eine Speicherprozedur in Form einer weiteren Funktion erstellen.

Um die Inhalte Deiner Meta-Boxen zu speichern, hängst Du Dich ,mit einer Funktion in den Speicherprozess von WordPress. Dafür stellt WordPress den Action-Hook save_post zur Verfügung.

add_action('save_post','save_meta_advert_boxes',10,2);

Dieser Action-Hook wird immer dann ausgelöst, wenn ein Beitrag oder eine Seite erstellt oder aktualisiert wird, und mit ihm die verknüpfte Funktion save_meta_advert_boxes.

Bevor es aber an das Speichern der Meta-Daten geht, solltest Du noch verschiedene Dinge prüfen, bei deren Vorhandensein das Speichern unterbunden werden soll:

/** Nicht speichern bei automatischer Speicherung **/
if(defined('DOING_AUTOSAVE') &amp;&amp; DOING_AUTOSAVE ){
		return;
	}
	
/** Nicht speichern, wenn der Nonce ['meta_advert_boxes_nonce'] nicht vorhanden, falsch oder nicht mehr gültig ist **/
if(!isset($_POST['meta_advert_boxes_nonce']) || !wp_verify_nonce($_POST['meta_advert_boxes_nonce'],'meta_box_noncecombined')){
		return;
	}

/** Nicht speichern, wenn der aktuelle Benutzer nicht berechtigt ist, Artikel zu bearbeiten **/  	
 if(!current_user_can('edit_post',$post_id)){
		return;
	}

Wenn keine dieser Kriterien zum Abbruch des Speicherprozesses geführt haben, prüft die Funktion mittels isset(), ob die Meta-Felder meta_comissions_box_check, meta_cooperations_box_check und meta_cooperations_box_partner vorhanden sind.

Je nachdem welche Ergebnisse isset() zurückgibt, werden die Variablen, die anschließend zum Speichern verwendet werden sollen, befüllt.

if(isset($_POST['meta_comissions_box_check'])){
	$meta_comissions_box_check = 'on';
	} else {
			$meta_comissions_box_check = 'off';
		}
			
if(isset($_POST['meta_cooperations_box_check'])){
	$meta_cooperations_box_check = 'on';
	} else {
		$meta_cooperations_box_check = 'off';
		}
		
if(isset($_POST['meta_cooperations_box_partner'])){
	$meta_cooperations_box_partner = $_POST['meta_cooperations_box_partner'];
	} else {
		$meta_cooperations_box_partner = '';
		}

Um die Meta-Felder endgültig zu speichern, verwendest Du dann die WordPress-Funktion update_post_meta().

update_post_meta($post_id,'meta_comissions_box_check',$meta_comissions_box_check);
update_post_meta($post_id,'meta_cooperations_box_check',$meta_cooperations_box_check);
update_post_meta($post_id,'meta_cooperations_box_partner',$meta_cooperations_box_partner);

Vollständiger Code zum Speichern der Meta-Felder

add_action('save_post','save_meta_advert_boxes',10,2);
function save_meta_advert_boxes($post_id, $post){
	if(defined('DOING_AUTOSAVE') &amp;&amp; DOING_AUTOSAVE ){
		return;
	}
  	
   	if(!isset($_POST['meta_advert_boxes_nonce']) || !wp_verify_nonce($_POST['meta_advert_boxes_nonce'],'meta_box_noncecombined')){
		return;
	}
  	
 	if(!current_user_can('edit_post',$post_id)){
		return;
	}
  	
	if(isset($_POST['meta_comissions_box_check'])){$meta_comissions_box_check = 'on';} else {$meta_comissions_box_check = 'off';}
	if(isset($_POST['meta_cooperations_box_check'])){$meta_cooperations_box_check = 'on';} else {$meta_cooperations_box_check = 'off';}
	if(isset($_POST['meta_cooperations_box_partner'])){$meta_cooperations_box_partner = $_POST['meta_cooperations_box_partner'];} else {$meta_cooperations_box_partner = '';}
  	
  	update_post_meta($post_id,'meta_comissions_box_check',$meta_comissions_box_check);
	update_post_meta($post_id,'meta_cooperations_box_check',$meta_cooperations_box_check);
	update_post_meta($post_id,'meta_cooperations_box_partner',$meta_cooperations_box_partner);
  }

Die Hinweise sichtbar machen

Zu guter Letzt musst Du nun noch die Hinweise für Deine Leser im betroffenen Artikel sichtbar machen.

Im Code-Beispiel verwende ich den WordPress-Filter the_content, um meine Hinweise zu platzieren.

Ich möchte allerdings gleich anmerken, dass ich kein großer Fan dieses Filters bin und ihn nur verwende, weil mir das Theme von BLOGGERWISSEN, nämlich WP Resonar von Automattic, leider keinen passenden Action-Hook zur Verfügung stellt.

Sollte das von Dir verwendete Theme passende Action-Hooks zur Verfügung stellen, verwende bitte diese. Wie der Code dann aussehen sollte, zeige ich Dir noch im Anschluss.

Mit the_content Sponsored Posts und Affiliate-Links als Werbung kennzeichnen

Zunächst musst Du den Filter initialisieren und ihm eine Funktion zuweisen, im Beispiel ist das die Funktion namens addAdvertHint.

add_filter('the_content','addAdvertHint');

Wie ich am Anfang des Artikels erwähnt habe, gibt es drei unterschiedliche Szenarien für die Anzeige der Werbehinweise:

  • Der Artikel ist bezahlte Werbung mit Nennung des Kooperationspartners und enthält darüberhinaus Provisionslinks.
  • Der Artikel ist bezahlte Werbung ohne Nennung des Kooperationspartnes und enthält Provisionslinks.
  • Der Artikel enthält nur Provisionslinks.

Basierend auf diesen drei Szenarien erstellst Du Dir jetzt eine Logik für die Anzeige Deiner Hinweise.

Dafür musst Dir zunächst die notwendigen Informationen holen. Nämlich, welche Checkboxen wurden angehakt und wurde ein Kooperationspartner hinterlegt.

Diese Informationen schreibst Du in jeweils eigene Variablen, so dass Du am Ende drei Variable hast, mit denen Du arbeiten kannst:

  • $comissions_hint – Checkbox in der Metabox Provisionslinks wurde angehakt oder nicht.
  • $cooperations_hint – Checkbox in der Metabox Kooperation wurde angehakt oder nicht.
  • $partner_hint – Es wurde der Name des Kooperationspartnes in der Meta-Box Kooperation angegeben oder nicht.

Um diese Informationen verfügbar zu machen, stellt WordPress die Funktion get_post_meta() zur Verfügung. In Verbindung mit den Parametern $post_id, $key und $single liefert Dir diese Funktion dann den Wert für ein bestimmtes Meta-Feld ($key) zurück.

Um die ID des Artikels, den sich ein Besucher gerade ansieht, in Erfahrung zu bringen, verwendest Du die WordPress-Funktion get_the_ID() und schreibst die ID direkt in die Funktion get_post_meta().

Die Meta-Felder, aus denen Du die Informationen beziehen möchtest, sind die Felder, die Du schon von den beiden Meta-Boxen kennst und lauten:

  • meta_comissions_box_check
  • meta_cooperations_box_check
  • meta_cooperations_box_partner

Wichtig an der Stelle ist, dass Du den Wert für §single auf true setzt. Denn mit dem Wert true wird nur der erste Wert für das angegebenen Meta-Feld zurückgegeben.

$comissions_hint = 	get_post_meta(get_the_ID(),'meta_comissions_box_check',true);
$cooperations_hint = get_post_meta(get_the_ID(),'meta_cooperations_box_check',true);
$partner_hint = get_post_meta(get_the_ID(),'meta_cooperations_box_partner',true);

Basierend auf den, in den Variablen enthaltenen Informationen, kannst Du Dir nun die Logik zur Anzeige der Hinweise erstellen.

Zum Prüfen und dem daraus resultierenden Anzeigeverhalten bieten sich if -Schleifen an:

/** SZENARIO 1 **/
	1. Checkbox Provisionslinks wurde NICHT angehakt,
	2. Checkbox Kooperation wurde NICHT angehakt
**/

if($comissions_hint != 'on' &amp;&amp;  $cooperations_hint != 'on') {
	  		return $content;
		}
		
/**	SZENARIO 2
	1. Checkbox Provisionslinks wurde angehakt,
	2. Checkbox Kooperation wurde angehakt,
	3. Kooperationspartner wurde angegeben
**/

if($comissions_hint == 'on' &amp;&amp;  $cooperations_hint == 'on' &amp;&amp; !empty($partner_hint)) {
	/* HTML output for scenario 2 */
	}

/**	SZENARIO 3
	1. Checkbox Provisionslinks wurde angehakt,
	2. Checkbox Kooperation wurde angehakt,
	3. Kooperationspartner wurde NICHT angegeben
**/

if($comissions_hint == 'on' &amp;&amp;  $cooperations_hint == 'on' &amp;&amp; empty($partner_hint)) {
	/* HTML output for scenario 3 */
	}
	
/**	SZENARIO 4
	1. Checkbox Provisionslinks wurde angehakt,
	2. Checkbox Kooperation wurde NICHT angehakt
**/

if($comissions_hint == 'on' &amp;&amp;  $cooperations_hint != 'on') {
	/* HTML output for scenario 4 */
	}

/** SZENARIO 5
	1. Checkbox Provisionslinks wurde NICHT angehakt,
	2. Checkbox Kooperation wurde angehakt,
	3. Kooperationspartner wurde NICHT angegeben
**/

if($comissions_hint != 'on' &amp;&amp;  $cooperations_hint == 'on' &amp;&amp; empty($partner_hint)) {
	  	/* HTML output for scenario 5 */
		}

Ob Du Dein HTML komplett in die if-Schleife schreibst oder wie ich, für die ausführlichen Hinweise am Artikelende vordefinierte Variablen verwendest, bleibt Dir überlassen.

Der Vorteil der vordefinierten Variablen liegt darin, dass Du Textänderungen nur an einer Stelle in Deinem Code machen musst, und nicht in allen if-Schleifen.

Aber egal wie Du Deine Ausgabe gestaltest, wichtig ist nur, dass Du beim Einbinden Deiner Hinweistexte in den if-Schleifen unbedingt diesem Muster folgst:

$advert_content = ''; 			// HTML und Text oberhalb des Artikels
$advert_content .= $content; 	// ursprünglicher Inhalt des Artikels
$advert_content .= '';  		// HTML und Text unterhalb des Artikel

return $advert_content; 		// Ausgabe des neuen Inhalts

Vollständiges Code-Beispiel mit the_content

add_action('add_meta_boxes','add_meta_advert_boxes');
add_action('save_post','save_meta_advert_boxes',10,2);
add_filter('the_content','jyy_addAdvertHint');
	
function add_meta_advert_boxes(){
	add_meta_box('comissions-box-id','Provisionslinks','meta_comissions_box','post','side','high');
	add_meta_box('cooperations-box-id','Kooperation','meta_cooperations_box','post','side','high');
} // close function
	
function meta_comissions_box($post)	{
	//global $post;
	$meta_comissions_box_values = get_post_custom( $post->ID );
	if(isset($meta_comissions_box_values['meta_comissions_box_check'])){
		 $meta_comissions_box_checked = esc_attr($meta_comissions_box_values['meta_comissions_box_check'][0]);
		} else {
			$meta_comissions_box_checked ='';
		}
	wp_nonce_field('meta_box_noncecombined','meta_advert_boxes_nonce' );
	echo (	'<input type="checkbox" id="meta_comissions_box_check" name="meta_comissions_box_check"'. checked($meta_comissions_box_checked,'on',false) . '/>
			<label for="meta_comissions_box_check">Dieser Beitrag enhält Provisionslinks.</label>
			');
} // close function
	
function meta_cooperations_box($post)	{
	//global $post;
	$meta_cooperations_box_values = get_post_custom( $post->ID );
	if(isset($meta_cooperations_box_values['meta_cooperations_box_check'])){
		$meta_cooperations_box_checked = esc_attr($meta_cooperations_box_values['meta_cooperations_box_check'][0]);
		} else {
			$meta_cooperations_box_checked ='';
		}
	if(isset($meta_cooperations_box_values['meta_cooperations_box_partner'])){
		$meta_cooperations_box_partner = esc_attr($meta_cooperations_box_values['meta_cooperations_box_partner'][0]);
		} else {
			$meta_cooperations_box_partner ='';
		}	
	wp_nonce_field('meta_box_noncecombined','meta_advert_boxes_nonce');
	echo ('	<input type="checkbox" id="meta_cooperations_box_check" name="meta_cooperations_box_check"'. checked($meta_cooperations_box_checked, 'on', false) .'/>
			<label for="meta_comissions_box_check">Dieser Beitrag enhält Werbung.</label>				
			<input style="width:100%" placeholder="Name des Kooperationspartner" type="text" id="meta_cooperations_box_partner" name="meta_cooperations_box_partner" value="' . $meta_cooperations_box_partner . '"/>');
} // close function
  
function save_meta_advert_boxes($post_id, $post){
	if(defined('DOING_AUTOSAVE') &amp;&amp; DOING_AUTOSAVE ){
		return;
	}
  	
   	if(!isset($_POST['meta_advert_boxes_nonce']) || !wp_verify_nonce($_POST['meta_advert_boxes_nonce'],'meta_box_noncecombined')){
		return;
	}
  	
 	if(!current_user_can('edit_post',$post_id)){
		return;
	}
  	
	if(isset($_POST['meta_comissions_box_check'])){$meta_comissions_box_check = 'on';} else {$meta_comissions_box_check = 'off';}
	if(isset($_POST['meta_cooperations_box_check'])){$meta_cooperations_box_check = 'on';} else {$meta_cooperations_box_check = 'off';}
	if(isset($_POST['meta_cooperations_box_partner'])){$meta_cooperations_box_partner = $_POST['meta_cooperations_box_partner'];} else {$meta_cooperations_box_partner = '';}
  	
  	update_post_meta($post_id,'meta_comissions_box_check',$meta_comissions_box_check);
	update_post_meta($post_id,'meta_cooperations_box_check',$meta_cooperations_box_check);
	update_post_meta($post_id,'meta_cooperations_box_partner',$meta_cooperations_box_partner);
  } 
  
/*** FRONT END OUTPUT ***/
 function jyy_addAdvertHint($content){
	$comissions_hint = 	get_post_meta(get_the_ID(),'meta_comissions_box_check',true);
  	$cooperations_hint = get_post_meta(get_the_ID(),'meta_cooperations_box_check',true);
	$partner_hint = get_post_meta(get_the_ID(),'meta_cooperations_box_partner',true);
	  
	if($comissions_hint == 'on' ||  $cooperations_hint == 'on') {
		add_action('wp_footer','addAdvertHintCSS');	
	}
	 $footer_hint_cooperation ='Dies ist ein bezahlter Beitrag von ' . $partner_hint . '. Alle Bewertungen und Meinungen, die in diesem Beitrag zum Ausdruck kommen, basieren auf meiner persönlichen Meinung. »<a href="https://justyumyum.media/blog-disclosure/" target="_blank" rel="noopener">Mehr erfahren.</a> ';
	
	 $footer_hint_comission = 'Die mit Sternchen (*) gekennzeichneten Links sind sogenannte Provisions-Links. Wenn Du auf einen dieser Links in einem Beitrag klickst und das Produkt in dem jeweils verlinkten Online-Shop tatsächlich kaufst, bekomme ich in manchen Fällen eine Provision. Diese Provision hat keinen Einfluss auf meine Meinungsäußerung, sondern hilft lediglich, meine Kosten, die mir aus dem Betrieb des Blogs entstehen, zum Teil zu decken.';
	
	if($comissions_hint == 'on' &amp;&amp;  $cooperations_hint == 'on' &amp;&amp; !empty($partner_hint)) {
	  	$advert_content = '<p class="jyy-advert-hint">Werbung - in Kooperation mit ' . $partner_hint . '. Dieser Artikel enthält zudem Provisionslinks. Mehr dazu erfährst Du am <a href="#advert-info">Ende diesen Artikels</a>.</p>';
		$advert_content .= $content;
		$advert_content .= '<p id="advert-info" class="jyy-advert-hint">'. $footer_hint_cooperation . $footer_hint_comission .'</p>';
		return $advert_content;
		}
	if($comissions_hint == 'on' &amp;&amp;  $cooperations_hint == 'on' &amp;&amp; empty($partner_hint)) {
	  	$advert_content = '<p class="jyy-advert-hint">Dieser Artikel enthält Werbung und Provisionslinks. Mehr dazu erfährst Du am <a href="#advert-info">Ende diesen Artikels</a>.</p>';
		$advert_content .= $content;
		$advert_content .= '<p id="advert-info" class="jyy-advert-hint">'. $footer_hint_cooperation . $footer_hint_comission .'</p>';
		return $advert_content;
		}
		
	if($comissions_hint == 'on' &amp;&amp;  $cooperations_hint != 'on') {
	  	$advert_content = '<p class="jyy-advert-hint">Dieser Artikel enthält Provisionslinks. Mehr dazu erfährst Du am <a href="#advert-info">Ende diesen Artikels</a>.</p>';
		$advert_content .= $content;
		$advert_content .= '<p id="advert-info" class="jyy-advert-hint">' . $footer_hint_comission . '</p>';
		return $advert_content;
		}
	
	if($comissions_hint != 'on' &amp;&amp;  $cooperations_hint == 'on') {
	  	$advert_content = '<p><span class="jyy-advert-hint">Dieser Artikel enthält Werbung.</span></p>';
		$advert_content .= $content;
		$advert_content .= '<p id="advert-info" class="jyy-advert-hint">'. $footer_hint_cooperation  . '</p>';
		return $advert_content;
		}
	 if($comissions_hint != 'on' &amp;&amp;  $cooperations_hint != 'on') {
	  		return $content;
		}
} // close function

function addAdvertHintCSS(){
	echo('<style id="advert-hint-css">.jyy-advert-hint{background: #dedede;font-size: .8rem;padding: 0.5rem 1rem;font-family: sans-serif;}</style>');
}

Mit Action-Hooks Sponsored Posts und Affiliate-Links als Werbung kennzeichnen

Auf meinem JUST YUM YUM Foodblog verwende ich das Theme Foodie Pro, das wiederum auf dem Genesis Framework basiert.

Einer der großen Vorteile dieses Frameworks sind, aus meiner Sicht, die vielen weiteren Action-Hooks, die hier zur Verfügung gestellt werden.

Durch die alternativen Action-Hooks bin ich nicht mehr gezwungen, den Inhalt meiner Artikel über the_content zu manipilieren.

Stattdessen kann ich die beiden Action-Hooks genesis_before_entry_content und genesis_after_entry_content verwenden, um auf JUST YUM YUM Foodblog meine Sponsored Posts und Affiliate-Links als Werbung kennzeichnen zu können.

Zudem tausche ich den Filter-Hook the_content gegen den Action-Hook wp.

add_action('add_meta_boxes','add_meta_advert_boxes');
add_action('save_post','save_meta_advert_boxes',10,2);
add_action('wp','addAdvertHint');
	
function add_meta_advert_boxes(){
	add_meta_box('comissions-box-id','Provisionslinks','meta_comissions_box','post','side','high');
	add_meta_box('cooperations-box-id','Kooperation','meta_cooperations_box','post','side','high');
} // close function
	
function meta_comissions_box($post)	{
	//global $post;
	$meta_comissions_box_values = get_post_custom( $post->ID );
	if(isset($meta_comissions_box_values['meta_comissions_box_check'])){
		 $meta_comissions_box_checked = esc_attr($meta_comissions_box_values['meta_comissions_box_check'][0]);
		} else {
			$meta_comissions_box_checked ='';
		}
	wp_nonce_field('meta_box_noncecombined','meta_advert_boxes_nonce' );
	echo (	'<input type="checkbox" id="meta_comissions_box_check" name="meta_comissions_box_check"'. checked($meta_comissions_box_checked,'on',false) . '/>
			<label for="meta_comissions_box_check">Dieser Beitrag enhält Provisionslinks.</label>
			');
} // close function
	
function meta_cooperations_box($post)	{
	//global $post;
	$meta_cooperations_box_values = get_post_custom( $post->ID );
	if(isset($meta_cooperations_box_values['meta_cooperations_box_check'])){
		$meta_cooperations_box_checked = esc_attr($meta_cooperations_box_values['meta_cooperations_box_check'][0]);
		} else {
			$meta_cooperations_box_checked ='';
		}
	if(isset($meta_cooperations_box_values['meta_cooperations_box_partner'])){
		$meta_cooperations_box_partner = esc_attr($meta_cooperations_box_values['meta_cooperations_box_partner'][0]);
		} else {
			$meta_cooperations_box_partner ='';
		}	
	wp_nonce_field('meta_box_noncecombined','meta_advert_boxes_nonce');
	echo ('	<input type="checkbox" id="meta_cooperations_box_check" name="meta_cooperations_box_check"'. checked($meta_cooperations_box_checked, 'on', false) .'/>
			<label for="meta_comissions_box_check">Dieser Beitrag enhält Werbung.</label>				
			<input style="width:100%" placeholder="Name des Kooperationspartner" type="text" id="meta_cooperations_box_partner" name="meta_cooperations_box_partner" value="' . $meta_cooperations_box_partner . '"/>');
} // close function
  
function save_meta_advert_boxes($post_id, $post){
	if(defined('DOING_AUTOSAVE') &amp;&amp; DOING_AUTOSAVE ){
		return;
	}
  	
   	if(!isset($_POST['meta_advert_boxes_nonce']) || !wp_verify_nonce($_POST['meta_advert_boxes_nonce'],'meta_box_noncecombined')){
		return;
	}
  	
 	if(!current_user_can('edit_post',$post_id)){
		return;
	}
  	
	if(isset($_POST['meta_comissions_box_check'])){$meta_comissions_box_check = 'on';} else {$meta_comissions_box_check = 'off';}
	if(isset($_POST['meta_cooperations_box_check'])){$meta_cooperations_box_check = 'on';} else {$meta_cooperations_box_check = 'off';}
	if(isset($_POST['meta_cooperations_box_partner'])){$meta_cooperations_box_partner = $_POST['meta_cooperations_box_partner'];} else {$meta_cooperations_box_partner = '';}
  	
  	update_post_meta($post_id,'meta_comissions_box_check',$meta_comissions_box_check);
	update_post_meta($post_id,'meta_cooperations_box_check',$meta_cooperations_box_check);
	update_post_meta($post_id,'meta_cooperations_box_partner',$meta_cooperations_box_partner);
  } 
  
/*** FRONT END OUTPUT ***/
function addAdvertHint(){
  	$comissions_hint = 	get_post_meta(get_the_ID(),'meta_comissions_box_check',true);
	$cooperations_hint =get_post_meta(get_the_ID(),'meta_cooperations_box_check',true);
	$partner_hint = 	get_post_meta(get_the_ID(),'meta_cooperations_box_partner',true);
  
  	$GLOBALS['partner_hint'] = 	$partner_hint;
  	$GLOBALS['footer_hint_cooperation'] = 'Dies ist ein bezahlter Beitrag von ' . $partner_hint . '. Alle Bewertungen und Meinungen, die in diesem Beitrag zum Ausdruck kommen, basieren auf meiner persönlichen Meinung. »<a href="https://justyumyum.media/blog-disclosure/" target="_blank" rel="noopener">Mehr erfahren.</a> ';
	$GLOBALS['footer_hint_comission'] = 'Die mit Sternchen (*) gekennzeichneten Links sind sogenannte Provisions-Links. Wenn Du auf einen dieser Links in einem Beitrag klickst und das Produkt in dem jeweils verlinkten Online-Shop tatsächlich kaufst, bekomme ich in manchen Fällen eine Provision. Diese Provision hat keinen Einfluss auf meine Meinungsäußerung, sondern hilft lediglich, meine Kosten, die mir aus dem Betrieb des Blogs entstehen, zum Teil zu decken.';
  	
		if($comissions_hint == 'on' ||  $cooperations_hint == 'on') {
			add_action('wp_footer','addAdvertHintCSS');	
			}

		/** scenario 1 **/ 
		if($comissions_hint == 'on' &amp;&amp;  $cooperations_hint == 'on' &amp;&amp; !empty($partner_hint)) {
			add_action('genesis_before_entry_content','add_top_hint_s1');
			add_action('genesis_after_entry_content','add_bottom_hint_s1',15);
		}
		
		/** scenario 2 **/
		if($comissions_hint == 'on' &amp;&amp;  $cooperations_hint == 'on' &amp;&amp; empty($partner_hint)) {
			add_action('genesis_before_entry_content','add_top_hint_s2');
			add_action('genesis_after_entry_content','add_bottom_hint_s2',15);
		}
		
		/** scenario 3 **/
		if($comissions_hint == 'on' &amp;&amp;  $cooperations_hint != 'on') {
			add_action('genesis_before_entry_content','add_top_hint_s3');
			add_action('genesis_after_entry_content','add_bottom_hint_s3',15);
		}

		/** scenario 4 **/
		if($comissions_hint != 'on' &amp;&amp;  $cooperations_hint == 'on') {
			add_action('genesis_before_entry_content','add_top_hint_s4');
			add_action('genesis_after_entry_content','add_bottom_hint_s4',15);
		}
} // close function

/** Scenario 1 **/
function add_top_hint_s1(){
			global $partner_hint;
			echo('<p class="jyy-advert-hint">Werbung - in Kooperation mit ' . $partner_hint . '. Dieser Artikel enthält zudem Provisionslinks. Mehr dazu erfährst Du am <a href="#advert-info">Ende diesen Artikels</a>.</p>');
		}
function add_bottom_hint_s1(){
			global $footer_hint_cooperation, $footer_hint_comission;
			echo('<p id="advert-info" class="jyy-advert-hint">'. $footer_hint_cooperation . $footer_hint_comission .'</p>');
		}
		
/** Scenario 2 **/
function add_top_hint_s2(){
			echo('<p class="jyy-advert-hint">Dieser Artikel enthält Werbung und Provisionslinks. Mehr dazu erfährst Du am <a href="#advert-info">Ende diesen Artikels</a>.</p>');
		}
function add_bottom_hint_s2(){
			global $footer_hint_cooperation, $footer_hint_comission;
			echo('<p id="advert-info" class="jyy-advert-hint">'. $footer_hint_cooperation . $footer_hint_comission .'</p>');
		}

/** Scenario 3 **/
function add_top_hint_s3(){
			echo('<p class="jyy-advert-hint">Dieser Artikel enthält Provisionslinks. Mehr dazu erfährst Du am <a href="#advert-info">Ende diesen Artikels</a>.</p>');
		}
function add_bottom_hint_s3(){
			global $footer_hint_comission;
			echo('<p id="advert-info" class="jyy-advert-hint">' . $footer_hint_comission . '</p>');
		}
/** Scenario 4 **/
function add_top_hint_s4(){
			echo('<p class="jyy-advert-hint">Dieser Artikel enthält Werbung. Mehr dazu erfährst Du am <a href="#advert-info">Ende diesen Artikels</a>.</p>');
		}
function add_bottom_hint_s4(){
			global $footer_hint_comission;
			echo('<p id="advert-info" class="jyy-advert-hint">'. $footer_hint_cooperation  . '</p>');
		}

/** Custom CSS **/
function addAdvertHintCSS(){
	echo('<style id="advert-hint-css">.jyy-advert-hint{background: #dedede;font-size: .8rem;padding: 0.5rem 1rem;font-family: sans-serif;}</style>');
}

Dieser Code ist zwar um einige Zeilen länger, hat aber einfach den Vorteil, dass Du mit der Platzierung deutlich flexibler bist. Natürlich immer abhängig davon, welche Action Hooks Dir zur Verfügung stehen.

9 Antworten

  1. Teil 1
    Kommentieren ist hier gar nicht so leicht…. Musste einiges an Text löschen, weil mir Deine Seite ständig gesagt hat, dass ich zu viel geschrieben habe. 😅

    So eine Lösung finde ich immer sehr hilfreich, weil es so auf der Seite einheitlich und transparent wird. Ich mag es auch, wenn die Werbung dann auch noch getaggt wird, damit die Leser einfach mal schauen können, welche Werbebeiträge es gibt. Rechtlich tut sich da aber sicher auch nochmal etwas. Allein beim Fall Vreni Frost wird sich ja noch zeigen, was und in welcher Form Werbung zu kennzeichnen ist.
    Wenn man transparent sein möchte, müßte man sich deshalb wahrscheinlich selbst unterschiedliche Werbearten überlegen. Denn eigentlich ist ja jeder Review eine Werbung, auch wenn dem Leser eigentlich nur interessieren wird, bei welchen Beiträgen Geld oder Sachdinge geflossen sind.

    1. Moin Pascal

      Sorry, dass es sich etwas schwierig gestaltet hat. Die Kommentare sind tatsächlich in ihrer Zeichenzahl begrenzt. Eine Spam Prevention Maßname 🙂

      Ich bin ganz Deiner Meinung: was das Kennzeichnen von Werbung angeht, ist das Ende der Fahnenstange mit Sicherheit noch nicht erreicht. Und ich persönlich begrüße diese Pflicht.

      Leider ist es aber immer noch so, dass Advertiser darauf bestehen, dass ihre bezahlten Artikel nicht als Werbung gekennzeichnet werden und die Backlinks auf ihre Seiten kein „nofollow“ haben sollen. Für mich ein absolutes No-Go. Denn das Risiko, wenn man sich auf solche Kooperationen einlässt, trägt einzig und allein der Blogger. Bei solchen Anfrage machen ich mir meist auch nicht mehr die Mühe, überhaupt eine Absage zu schreiben.

  2. Teil 2
    Wenn man für Deine Metaboxen eine Plugin-Lösung sucht, könnte man übrigens Advanced Custom Fields nehmen. Damit lässt sich das auch schnell einrichten. Einfach die Boxen für das Backend erstellen und dann mit einfachen Code ins Template einbauen, fertig. Macht jedenfalls Spass mit dem Plugin zu arbeiten.

    1. Das Plugin kenne ich tatsächlich, habe es aber noch nicht verwendet.

      Bei „mit einfachen Code ins Template einbauen“ liegt meiner Ansicht nach die Krux. Das Anpassen von Originaldateien sollte grundsätzlich ein No-Go sein. Bleibt der Ansatz über ein Child Theme, um die Anpassungen vorzunehmen. Auch davon bin ich kein Freund, da ich bisher keine guten Erfahrungen gemacht habe. In aller Regel hat ein Child Theme für mich zu mehr Problemen geführt, als sie zu lösen. Daher nutze ich die Hooks und Filter, wann immer es geht 😉

  3. Teil 3

    Vielleicht nochmal etwas bzgl. der Provisionslinks. Man muss ja Werbung vom Content trennen und es gibt Anwälte die sagen, dass es deswegen nicht einfach ausreicht, wenn man unter dem Beitrag einfach nur schreibt, dass irgendwo im Artikel irgendwelche Provisionslinks versteckt sind. Leser sind nämlich nicht in der Lage herauszufinden, was nun ein Provisions-/Werbelink ist und was nicht. Deswegen sollte man, wenn man wirklich ernsthaft Werbung von Content trennen möchte, jede Werbung auch dementsprechend markieren/anzeigen. Das altbekannte * hat sich bei Provisionslinks durchaus bewährt, weil es jeder von Verträgen kennt und uns aufmerksam werden lässt. Denn wenn man das * sieht, sucht man auch nach dem Kleingedruckten.

    Das soll aber nicht heißen, dass das jetzt „die“ Lösung ist und alles andere nicht. Als ich im Internet bzgl. Werbelinks recherchiert hatte, hatte ich viele (unterschiedliche) Meinungen gelesen. Es gibt da anscheinend auch viel Grauzone. Wenn man aber wirklich Werbung vom Content trennen möchte, dann macht das gezielte Markieren am ehesten Sinn, da man anders rum, also wenn die Leser die Werbelinks erst suchen müssen, vorsorglich den ganzen Artikel als Werbung kennzeichnen müßte, da einfach zu sagen „Irgendwo gibt es Werbung“ ja keine wirkliche Trennung darstellt.

    Liebe Grüße, Pascal

    1. Auch hier bin ich absolut Deiner Meinung. Der Bereich der Provisionslinks ist im Grunde gesetzlich (noch) nicht geregelt. Das einzig Konkrete, was ich zu dem Thema habe finden können, dass der Begriff „Affiliate Link“ nicht ausreichend ist, und man stattdessen den Begriff „Provisionslink“ verwenden soll(te). Wenn ich mich richtig erinnere, wurde es damit begründet, das es sich um englische Begriffe handelt, die von vielen nicht verstanden werden.

      Meine Provisionslinks kennzeichne ich grundsätzlich über ein (*). Zudem bringe ich am Ende eines jeden Artikels, der Provisionslinks enthält, einen Hinweis an, der erklären soll, was der Begriff Provisionslinks konkret bedeutet:

      „Die mit Sternchen (*) gekennzeichneten Links sind sogenannte Provisions-Links. Wenn Du auf einen dieser Links in einem Beitrag klickst und das Produkt in dem jeweils verlinkten Online-Shop tatsächlich kaufst, bekomme ich in manchen Fällen eine Provision. Diese Provision hat keinen Einfluss auf meine Meinungsäußerung, sondern hilft lediglich, meine Kosten, die mir aus dem Betrieb des Blogs entstehen, zum Teil zu decken.“

      Mit besten Grüßen aus Hamburg,
      Carsten

  4. Hi,

    ich habe gerade deinen Code versucht zu übernehmen, doch WordPress schmiert dabei ab. Snippets sagt hierzu:
    Keine Sorge
    Das Code-Snippet, dass du zu speichern versuchst, hat einen fatalen Fehler in Zeile 44 produziert:

    syntax error, unexpected ‚;‘
    Die vorherige Version des Snippets ist unverändert und der Rest dieser Website sollte wie vorher normal funktionieren.

    Bitte verwende den Zurück-Button in deinem Browser um zur vorherigen Seite zurückzukehren und versuche, den Code-Fehler zu beheben. Wenn es dir lieber ist, kannst du diese Seite schließen und die Änderungen, die du gerade gemacht hast, verwerfen. Es werden keine Änderungen an dieser Website vorgenommen.

    1. Moin Stefan,

      Danke für den Hinweis. Es müsste sich dann wohl um diese Zeile handeln, richtig?

      if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ){

      Das Code Plugin, das ich zum Anzeigen der Snippets verwende, hat – aus was für Gründen auch immer – das doppelte Und-Zeichen (&&) in HTML-Entities umgewandelt, was im PHP Code zwangsläufig zu einem Fehler führt.

      Bitte checke den Code bei Dir nochmal auf weitere HTML Entities und ersetze diese. Auf den ersten Blick scheint das Problem aber nur mit

      & amp ;

      zu bestehen.

      Ich hoffe, dass beseitigt den Fehler.

      Beste Grüße
      Carsten

  5. Hallo Carsten,

    Ich stand vor einem ähnliche Problem wie du und habe das ganze etwas pragmatischer angegangen. Bei mir werden Affiliate Links einfach über die Domain oder URL-Bestandteile automatisch erkannt und wenn solch ein Link im Artikel gefunden wurde, wird er mit einen * markiert und unter dem Content automatisch die Erklärung ausgegeben.

    Ich das dad Plugin in der WordPress Plugin Repository veröffentlich: https://wordpress.org/plugins/affiliate-link-marker/ Kannst auch gerne mal einen Blick auf den Code werfen: https://github.com/goaround/affiliate-link-marker

    Etwas mehr Hintergrund zur Funktionalität bei mir im Blog: https://go-around.de/blog/affiliate-marker/

Schreibe einen Kommentar

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