cardinal
Lt. Junior Grade
- Registriert
- Mai 2010
- Beiträge
- 467
Moin Community,
ich habe ein Prolem mit meiner Wordpress Metabox. Sie wird richtig angezeigt, doch bleiben die Daten, die ich eintrage bzw. auswähle nicht gespeichert und die Box macht immer einen "Reset"
Hier mal der Code:
Sieht jemand den Fehler? Werden die Daten nicht ordentlich gespeichert oder übergeben?
Nur das Textfeld wird richtig gespeichert, dies sehe ich in den "Custom Fields", es wird aber dennoch nach einem Aktualisieren der Seite nicht richtig angezeigt. Dort steht immer "array"...
Vielen Dank schonmal,
Lui
EDIT:
Funktioniert jetzt. Trotzdem danke an alle
ich habe ein Prolem mit meiner Wordpress Metabox. Sie wird richtig angezeigt, doch bleiben die Daten, die ich eintrage bzw. auswähle nicht gespeichert und die Box macht immer einen "Reset"
Hier mal der Code:
PHP:
<?php
//Wenn Metaboxen im Menü hinzugefügt werden, wird die Funktion projekte_addMetabox ausgeführt
add_action( 'add_meta_boxes', 'projekte_addMetabox' );
//In dem Moment wo ein Projekt gespeichert wird, werden die Zusatzinformationen aus der Optionen-Metabox gespeichert
add_action( 'save_post', 'projekte_saveData' );
//Fügt eine "Optionen-Metabox" zum posttype "projekte" hinzu
function projekte_addMetabox(){
add_meta_box(
'projekte_metabox',
'Optionen',
'projekte_optionenbox',
'projekte',
'side',
'high'
);
}
function projekte_optionenbox()
{
// $post is already set, and contains an object: the WordPress post
global $post;
$values = get_post_custom( $post->ID );
$text = isset( $values['my_meta_box_text'] ) ? $values['my_meta_box_text'] : '';
$selected = isset( $values['my_meta_box_select'] ) ? esc_attr( $values['my_meta_box_select'] ) : '';
$check = isset( $values['my_meta_box_check'] ) ? esc_attr( $values['my_meta_box_check'] ) : '';
// "nonce-Feld" wird später beim speichern benutzt
wp_nonce_field( 'projekte_action', 'projekte_name' );
?>
<p>
<label for="my_meta_box_text">Textfeld</label>
<input type="text" name="my_meta_box_text" id="my_meta_box_text" value="<?php echo $text; ?>" />
</p>
<p>
<label for="my_meta_box_select">Optionen:</label>
<select name="custom_element_grid_class" id="custom_element_grid_class">
<option value="one" <?php selected( $selected, 'one' ); ?>>Option 1</option>
<option value="two" <?php selected( $selected, 'two' ); ?>>Option 2</option>
</select>
</p>
<p>
<input type="checkbox" id="my_meta_box_check" name="my_meta_box_check" <?php checked( $check, 'on' ); ?> />
<label for="my_meta_box_check">Nur zum Test eingefügt :)</label>
</p>
<?php
}
function projekte_saveData( $post_id ){
//Abfrage: Handelt es sich um ein Autosave?
if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
//Abfrage: Kommen die Informationen aus dem richtigen Dokument?
if( !isset( $_POST['projekte_name'] ) || !wp_verify_nonce( $_POST['projekte_name'], 'projekte_action' ) ) return;
//Abfrage: Darf der aktuelle Nutzer diesen speziellen Artikel abspeichern?
if( !current_user_can( 'edit_post' ) ) return;
//Eigentliches Speichern der Daten
$allowed = array(
'a' => array(
'href' => array()
)
);
//Überprüfung der Daten bevor diese gespeichert werden
if( isset( $_POST['my_meta_box_text'] ) )
update_post_meta( $post_id, 'my_meta_box_text', wp_kses( $_POST['my_meta_box_text'], $allowed ) );
if( isset( $_POST['my_meta_box_select'] ) )
update_post_meta( $post_id, 'my_meta_box_select', esc_attr( $_POST['my_meta_box_select'] ) );
//Speichern der Checkbox
$chk = isset( $_POST['my_meta_box_check'] ) && $_POST['my_meta_box_select'] ? 'on' : 'off';
update_post_meta( $post_id, 'my_meta_box_check', $chk );
}
Sieht jemand den Fehler? Werden die Daten nicht ordentlich gespeichert oder übergeben?
Nur das Textfeld wird richtig gespeichert, dies sehe ich in den "Custom Fields", es wird aber dennoch nach einem Aktualisieren der Seite nicht richtig angezeigt. Dort steht immer "array"...
Vielen Dank schonmal,
Lui
EDIT:
Funktioniert jetzt. Trotzdem danke an alle
Zuletzt bearbeitet: