Zum Inhalt

AdSense

Voraussetzung

Modul AdSense muss unter Theme → Module aktiv sein. Es ist standardmäßig aus. Zusätzlich braucht es Cookiebot — siehe den Kasten unter Verhalten.

Wozu

Google-Anzeigen im Inhalt oder im Template ausgeben, ohne die IDs in jede Seite zu schreiben. Jede Anzeigefläche wird einmal in den Theme-Optionen angelegt und danach über einen kurzen Namen aufgerufen.

Einstellungen

Unter Theme → Einstellungen → AdSense.

Der Reiter AdSense mit Client ID, Inhaltsblocker und einer Anzeige

Feld Wofür
Client ID die Kontonummer aus AdSense, beginnt mit ca-pub
Inhaltsblocker ohne Wirkung, siehe unten

Darunter steht die Liste Ads. Jeder Eintrag ist eine Anzeigefläche:

Feld Wofür
Shortcode ID der Name, unter dem du die Fläche aufrufst; muss eindeutig sein
Slot ID die Slot-ID derselben Fläche aus AdSense
Lazy Loading ohne Wirkung, siehe unten

Einträge lassen sich am Griff links umsortieren. Die Reihenfolge hat keine Wirkung, sie hilft nur beim Wiederfinden.

Zwei Felder tun nichts

Inhaltsblocker und Lazy Loading werden gespeichert, aber nicht gelesen. Die Freigabe lief früher über den gewählten Blocker; heute prüft das Modul fest die Cookiebot-Kategorie marketing. Was in der Auswahlliste steht, ändert daran nichts. Ebenso wertet weder PHP noch das Skript das Lazy-Loading-Häkchen aus — jede Anzeige wird gleich behandelt.

Die Felder stehen noch im Formular. Verlass dich nicht darauf, dass sie das
tun, was ihr Name sagt.

Anzeige einfügen

Als Shortcode, mit der Shortcode ID als id:

[ad id="sidebar"]
[ad id="sidebar" class="mb-4"]

class landet am umgebenden Element und ist für Abstände gedacht.

Im Template über twtheme_ad('sidebar').

Verhalten

Der Shortcode gibt zunächst nur eine leere Hülle aus: <div data-tw-adslot> mit Client- und Slot-ID als data-Attribute. Ein Skript im Footer füllt sie — aber erst, wenn Cookiebot eine Einwilligung für die Kategorie marketing meldet. Das prüft es zweimal: beim Laden der Seite und erneut, sobald die Einwilligung gegeben wird. Dann erst wird das Skript von Google geholt und je Fläche ein <ins class="adsbygoogle"> eingesetzt.

Ohne Cookiebot erscheint keine Anzeige

Das Footer-Skript fragt window.Cookiebot ab. Fehlt dieses Objekt, wird nie gerendert — die Hülle bleibt leer, ohne Fehlermeldung und ohne Platzhalter. Wer die Einwilligung über Complianz oder ein anderes Werkzeug regelt, bekommt mit diesem Modul also gar keine Anzeigen. AdSense setzt hier faktisch das Cookiebot-Modul und das zugehörige Plugin voraus, auch wenn die Modulverwaltung diese Abhängigkeit nicht erzwingt.

Fehler erscheinen als Text im Frontend

Statt einer Anzeige gibt der Shortcode in vier Fällen einen englischen Satz zurück, der für Besucher sichtbar auf der Seite steht:

| Text | Ursache |
|---|---|
| `Shortcode ID is missing!` | `id` fehlt am Shortcode |
| `Client ID is missing!` | die *Client ID* ist nicht eingetragen |
| `Ad ID not found!` | keine Anzeigefläche mit dieser *Shortcode ID* |
| `Slot ID is missing!` | die Fläche hat keine *Slot ID* |

Nach dem Einschalten des Moduls gehört die Client ID also als Erstes gesetzt,
und nach dem Umbenennen einer Fläche die Aufrufe geprüft.

Entwicklertipps

Funktion Zweck Rückgabe
twtheme_ad($shortcode_id, $class = '', $args = []) Anzeige zur Shortcode-ID ausgeben string

Der dritte Parameter $args wird von der aktuellen Fassung nicht ausgewertet.

Filter Zweck
twtheme_option_fields AdSense-Optionen in die Theme-Optionen einhängen
twtheme_tinymce_shortcodes den Shortcode im Editor anbieten

Weiter