Das Örtchen RSS-Feed
Suchen
Blog
Ähnliche Beiträge
Neueste Kommentare
Neueste Einträge
Populäre Einträge
Tagwolke
addon auswertung barcamp blog bug cms cms made simple datenkrake drupal feed film firefox frickeln friday gewinnspiel hardware how-to individualisierung meinung mmo modul nas php problem rss se7en server sicherheit sicherung software spiel teil theme trailer unterhaltung update windows windows 7 wordpress wow
Monatsarchiv

WordPress: Drei Probleme bei der Widget-Entwicklung

Derzeit entwickle ich mein erstes Widget für WordPress. Als Übung habe ich mir ein kleines Kontaktformular vorgenommen, welches ich auf jeder Seite im Footer platzieren möchte. Hierbei stand ich vor drei Problemen, die ich anderen Entwicklern gerne ersparen möchte.

Die Anforderungen

Das Widget soll die Daten mittels post-Methode an die aktuelle Seite verschicken (ohne Ajax) und dort mittels eines Ankers wieder zur Widget-Position springen. Meldungen werden im Widget selbst ausgegeben.

Problem 1 - Leeres $_POST

Zuerst stellte sich für mich die Frage, an welche URL ich die Formulardaten verschicken muss. Ich testete dies mit festen Angaben im action-Attribut des form-Tags. Hierbei musste ich feststellen, daß $_POST immer dann leer ist, wenn am Ende der URL der Slash fehlt. Allerdings wäre ich ohne ein Posting im offiziellen Support-Forum nie auf den Slash als Ursache gekommen.

Hinweis: Dieses Problem ist nicht wirklich lösbar und liegt daran, daß WordPress bei fehlendem Slash auf die URL mit Slash umleitet und hierbei mittels header-Funktion einen neuen Seiten-Aufruf initiert.

Problem 2 - Statische Startseite zeigt falschen Inhalt

Auf Unterseiten funktionierte das Verschicken von leeren Formularen nach dem Lösen des ersten Problems, die Startseite muckte jedoch herum. Anstatt der ausgewählten statischen Seite wurde immer der Inhalt eines Blog-Beitrags angezeigt. Hierbei handelte es sich jedoch nicht um die normale Blog-Startseite mit der Übersicht der aktuellsten Beiträge, sondern es wurde genau ein Beitrag und zwar ohne Kommentar-Formular angezeigt (also auch keine Detailseite).

Lösung: Ich kann immer noch nicht genau sagen, welche Seite nun genau angezeigt wurde, es lag jedoch definitiv an der Angabe Blog-URL plus Anker (beispielsweise http://www.example.com/#ankerName). Deswegen habe ich mich entschieden für die Startseite eine gesonderte URL zu ermitteln und hoffe, niemals innerhalb des normalen Content-Bereiches Anker zu benötigen:

 if (get_option('show_on_front') == 'page') {
    $actionUrl = home_url('/index.php?page_id=' . get_option('page_on_front'));
} 

Hinweis: Mittels der if-Anweisung stellen wir fest, daß eine statische Startseite aktiviert wurde und ermitteln hierfür eine URL mit dem nachfolgenden Muster:

 http://www.example.com/index.php?page_id=1 

Diese URL funktionierte zumindest in meinen bisherigen Tests problemlos mit Ankern, wobei die Zahl natürlich abhängig von der gewählten Seite ist.

Problem 3 - Fehler 404

Nachdem das Abschicken von leeren Formularen nun immer klappte, stand ich vor dem nächsten Problem und zwar bekam ich bei teilweise ausgefüllten Formularen öfters einen 404er Fehler angezeigt (bedeutet normalerweise eine nicht gefundene Seite). Komischerweise hatte sich jedoch die URL bei den Tests nicht mehr geändert, der einzige Unterschied waren die jeweiligen Formulardaten.

Lösung: Auch hier wäre ich niemals selbst auf die Lösung gekommen, lediglich eine Suche mit Big G förderte ein passendes Posting im offiziellen Support-Forum zu Tage. Wie in dem Kommentar erwähnt wird, darf bei keinem Formular-Element das name-Tag mit dem Wert name belegt sein. Dies funktioniert also nicht:

 <input type="text" name="name" /> 

Und dies funktioniert:

<input type="text" name="sender" /> 

Fazit

Die drei beschriebenen Probleme sind alle ziemlich gemein und so hat mich leider die Entwicklung eines kleinen Formular-Widgets ganze zwei Tage Nerven gekostet.

Hallo! Bist du neu hier? Dann abonniere doch den RSS-Feed dieses nicht mehr ganz so stillen Örtchens, um über meine geistigen Ergüsse auf dem Laufenden zu bleiben. Alternativ besteht auch die Möglichkeit, sich von FeedBurner per E-Mail über meine Ausscheidungen benachrichtigen zu lassen.

Kommentar hinzufügen

(If you're a human, don't change the following field)
Your first name.
Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Der Inhalt dieses Feldes wird öffentlich zugänglich angezeigt, aber als nofollow markiert.
Hinweis

Kommentare beleben den Blog! Ich freue mich über jeden Kommentar. Du kannst hier offen Deine Meinung zum Artikel sagen, aber bitte beachte die Netiquette und vermeide es andere zu beleidigen.

Bitte unterlasst es die Kommentare zu SEO-Zwecken zu missbrauchen. Kommentare mit Links, die nicht zu Blogs führen (oder zu Blogs mit Grauzonen-Themen) und/oder Keywords als Namen verwenden und/oder Links im Kommentarbereich enthalten, sind nicht erwünscht!

Möchtest Du mir einen Blog-Artikel schmackhaft machen, dann schreib die URL ohne Link-Tag und ohne http(s):// in den Kommentarbereich und ich werde diesen bei Gefallen verlinken.

Die ersten vier Kommentare (mit den gleichen Daten bei Name, E-Mail und Blog) landen vor der Veröffentlichung in meiner Freigabe-Warteschlange und ich behalte mir das Recht vor, Kommentare entsprechend dieser Regeln anzupassen oder zu löschen!

t3n Magazin - Jetzt im Abo bestellen