AdWz WP-Plugin 15 – HTTP-Response

(AdWz; Auf dem Weg zum) WP-Plugin 15 – HTTP-Response

Im ersten Schritt zur Umsetzung der Idee aus
AdWz WP-Plugin 14 – Post
muss die Seite vor der Auslieferung (HTTP-Response) angepasst werden. In der Antwort müssen alle enthaltenen Formulare mit der Methode Post gefunden werden. Wann oder wo Formulare eingebaut werden ist zuvor nicht bekannt. Die Verarbeitung muss kurz vor der Auslieferung erfolgen, damit alle aktivierten Plugins und andere WordPress Anpassungen die Anfrage vor dem Plugin mg404rewrite ausgewertet haben.

Vergeblich auf der Suche nach einem guten Einstiegspunkt (Hook) in der WP-API habe ich die PHP-Funktion ob_start – Ausgabepufferung aktivieren – gefunden.

ob_start – Ausgabepufferung

Die Funktion ob_start aktiviert die Ausgabepufferung. Durch die Pufferung werden die Interpreterausgaben nicht direkt an den Anfrangenden (Client) gesendet sondern intern gesammelt. Dieser Funktion kann optional ein Parameter zur Nachbearbeitung des Pufferinhalts übergeben werden. Der übergebene Parameter wird aufgerufen wenn der Pufferinhalt am Ende der Ausführung ausgegeben wird (Callback). Der Ausgabepuffer wird der Funktion übergeben und eine Zeichenkette kann als neue Ausgabe zurück gegeben werden.

bool ob_start  ([ callback $output_callback  [, int $chunk_size  [, bool $erase  ]]] )

Ein guter Einstiegspunkt, um alle möglichen Formulare kurz vor der Response zu finden.

Auch WordPress benutzt ob_start. Die Suche im Verzeichnis $WP_HOME/wp-include zeigt die folgenden vier Treffer.

$ grep ob_start *
functions.php:			ob_start();
general-template.php:	ob_start();
theme.php:	ob_start( 'preview_theme_ob_filter' );
widgets.php:		ob_start();

WordPress & ob_start

Der erste Test, den HTTP-Response zu verändern, könnte mit diesen Informationen schon durchgeführt. Aber im wordpress.org-Forum habe ich noch folgenden Hinweis gefunden.

In mindestens einer Konfiguration wird der Response komprimiert gesendet. Mit der verdichteten Antwort kann in der Callback-Funktion nicht viel angefangen werden. Die Ausführung muss vor der WordPress-ob_start gesetzt werden. Ein kleiner Workaround …

function mg404_ob_start() {
	ob_start('mg404_PostProxy');
}
 
add_action('template_redirect', 'mg404_ob_start');

Die Aktion „template_redirect“ wird durch WordPress kurz vor der Auslieferung aufgerufen und die eigene Funktion mg404_ob_start() meldet die Funktion mg404_PostProxy über ob_start zum Rückaufruf durch die Ausgabepufferung an.

Test

Der folgende Test stellt durch die CallbackAusgabepufferungFunktion jeder Seite „MyCallBack“ voran.

function mg404_PostProxy ($content) {
	return "MyCallBack" . $content;
}

weiter …

Die erste Voraussetzung ist erfüllt, bevor die nächsten Schritte in der Funktion mg404_PostProxy getestet werden, wird im nächsten Schritt erst einmal eine leichte Konfigurationsmöglichkeit angesehen.

Tags: , ,

3 Antworten zu “AdWz WP-Plugin 15 – HTTP-Response”

  1. Schnurpsel sagt:

    Ahhhh, jetzt verstehe ich, was mit der AdWz-Serie gemeint ist. Du führst uns schrittweise mit ausführlichen Hintergrundinfos zum Ziel :-)
    Sehr gut!

  2. mgsimon sagt:

    Auf dem Weg zum … Ziel? :-)

  3. AdWz WP-Plugin 16 – Konfiguration » mgBlog sagt:

    […] Einstiegspunkt wurde in AdWz WP-Plugin 15 – HTTP-Response gefunden und eine Möglichkeit, das Plugin zu konfigurieren, hier beschrieben. Demnächst […]

Hinterlasse eine Antwort