Monat: Juli 2012

WordPress nonce auf Admin-Page mit Metaboxen

4. Juli 2012 - wordpress

Die Admin Pages von WordPress sind gespickt mit nonces . Also ein guter Grund, auch mal seine eigenen Metabox-Felder mit diesem Sicherheitsschloss zu versehen.

English Summary:

This artice describes the use of nonces on WordPress admin pages with multiple metaboxes

Nach einigem Herumprobieren habe ich für mich folgende funktionierende Lösung gewählt.

Zunächst mal werden alle Eingabefelder auf einer admin-page bereits von WordPress in einem einzigen Formular gebündelt, egal ob sie aus  einer oder aus  mehreren Metaboxen stammen.

Daher braucht man auch nur ein einziges nonce, das in irgend einer der Metaboxen stehen kann. Wenn diese Metabox  gelöscht wurde, liegt nach meiner Einschätzung ein grober Fehler in der Anwendung vor. Aber es entsteht kein Schaden, weil vor dem Schreiben der Daten der Check des nicht existierenden nonces negativ ausläuft und danach verhindert wird, dass Daten in die DB geschrieben werden.

Nonce Erstellung nach Codec in irgend einer Metabox

wp_nonce_field( 'name_of_my_action','name_of_nonce_field' );

Nonce Check nach Codec kurz vor dem Schreiben der Daten

if ( !empty($_POST) && check_admin_referer( 'name_of_my_action', 'name_of_nonce_field' ) )

Alles andere hat bei mir nicht richtig funktioniert. Wenn man z.B. kein eigenes nonce setzt, tut dies WordPress. Dieses nonce konnte ich aber nicht abprüfen.

Das Setzen und der Check der nonces funktioniert auch bei geschlossenen Metaboxen.