Metabox-Wert erhalten?

Ich habe eine benutzerdefinierte Metabox, die mit dem Code aus WordPress Reference erstellt wurde:

http://codex.wordpress.org/Function_Reference/add_meta_box

<?php /* Define the custom box */ // WP 3.0+ // add_action('add_meta_boxes', 'myplugin_add_custom_box'); // backwards compatible add_action('admin_init', 'myplugin_add_custom_box', 1); /* Do something with the data entered */ add_action('save_post', 'myplugin_save_postdata'); /* Adds a box to the main column on the Post and Page edit screens */ function myplugin_add_custom_box() { add_meta_box( 'myplugin_sectionid', __( 'My Post Section Title', 'myplugin_textdomain' ), 'myplugin_inner_custom_box', 'post' ); add_meta_box( 'myplugin_sectionid', __( 'My Post Section Title', 'myplugin_textdomain' ), 'myplugin_inner_custom_box', 'page' ); } /* Prints the box content */ function myplugin_inner_custom_box() { // Use nonce for verification wp_nonce_field( plugin_basename(__FILE__), 'myplugin_noncename' ); // The actual fields for data entry echo ' '; echo ''; } /* When the post is saved, saves our custom data */ function myplugin_save_postdata( $post_id ) { // verify this came from the our screen and with proper authorization, // because save_post can be triggered at other times if ( !wp_verify_nonce( $_POST['myplugin_noncename'], plugin_basename(__FILE__) ) ) return $post_id; // verify if this is an auto save routine. // If it is our form has not been submitted, so we dont want to do anything if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id; // Check permissions if ( 'page' == $_POST['post_type'] ) { if ( !current_user_can( 'edit_page', $post_id ) ) return $post_id; } else { if ( !current_user_can( 'edit_post', $post_id ) ) return $post_id; } // OK, we're authenticated: we need to find and save the data $mydata = $_POST['myplugin_new_field']; // Do something with $mydata // probably using add_post_meta(), update_post_meta(), or // a custom table (see Further Reading section below) return $mydata; } ?> 

Und ich bin nicht sicher, wie man seinen Wert auf jeder Seite anzeigt?

 ID, 'myplugin_new_field'); var_dump($meta); ?> 

Gibt:

Array (0) {}

Darüber hinaus aktualisiert das Metabox-Feld seinen Wert nicht, nachdem auf das Aktualisieren von Post / oder Seite geklickt wurde. Das liegt daran, dass der Eingabewert = “whathever” ist, während es in etwa dem obigen Code entsprechen sollte.

Irgendwelche Ideen?

Vielen Dank!

[bearbeiten]

Endgültiger Code, der den Eingabewert nicht aktualisiert:

 /* Define the custom box */ add_action('add_meta_boxes', 'myplugin_add_custom_box'); // backwards compatible add_action('admin_init', 'myplugin_add_custom_box', 1); /* Do something with the data entered */ add_action('save_post', 'myplugin_save_postdata'); /* Adds a box to the main column on the Post and Page edit screens */ function myplugin_add_custom_box() { add_meta_box( 'metabox_sidebar_select', __( 'My Post Section Title', 'myplugin_textdomain' ), 'myplugin_inner_custom_box', 'post' ); add_meta_box( 'metabox_sidebar_select', __( 'My Post Section Title', 'myplugin_textdomain' ), 'metabox_sidebar_select', 'page' ); } /* Prints the box content */ function myplugin_inner_custom_box() { // Use nonce for verification wp_nonce_field( plugin_basename(__FILE__), 'myplugin_noncename' ); // The actual fields for data entry echo ' '; echo 'ID, 'myplugin_new_field',true).'" size="25" />'; } /* When the post is saved, saves our custom data */ function myplugin_save_postdata( $post_id ) { // verify this came from the our screen and with proper authorization, // because save_post can be triggered at other times if ( !wp_verify_nonce( $_POST['myplugin_noncename'], plugin_basename(__FILE__) ) ) return $post_id; // verify if this is an auto save routine. // If it is our form has not been submitted, so we dont want to do anything if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id; // Check permissions if ( 'page' == $_POST['post_type'] ) { if ( !current_user_can( 'edit_page', $post_id ) ) return $post_id; } else { if ( !current_user_can( 'edit_post', $post_id ) ) return $post_id; } // OK, we're authenticated: we need to find and save the data $mydata = $_POST['myplugin_new_field']; // Do something with $mydata // probably using add_post_meta(), update_post_meta(), or // a custom table (see Further Reading section below) global $post; update_post_meta($post->ID, myplugin_new_field, $mydata); return $mydata; } 

Solutions Collecting From Web of "Metabox-Wert erhalten?"

Da hast du Antwort, in deinem Code wo es heißt:

// Mach etwas mit $ mydata, wahrscheinlich mit add_post_meta (), update_post_meta () oder einer benutzerdefinierten Tabelle (siehe weiter unten)

Sie müssen die Daten tatsächlich in die database einfügen / aktualisieren. Fügen Sie also Folgendes hinzu:

 global $post; update_post_meta($post->ID, 'myplugin_new_field', $mydata); 

und die Daten werden gespeichert, damit Sie sie mit Ihrem Code erhalten können:

 $meta = get_post_meta($post->ID, 'myplugin_new_field'); 

und die einzige andere Änderung, die Sie benötigen, ist in der function, die die Metabox-Änderung anzeigt:

 echo ''; 

zu

 echo ''; 

Aktualisieren:

Um Ihre Frage in den Kommentaren zu beantworten:

Um eine Auswahlliste zu speichern, speichern Sie sie einfach als eine Texteingabe und um die zuvor ausgewählte Option in der Metabox anzuzeigen, durchlaufen Sie einfach die Option und sehen, was ausgewählt wurde, und Sie fügen das “ausgewählte” Attribut hinzu. beispielsweise :

 //get last selected value if exists $selected = get_post_meta($post->ID, 'myplugin_new_select_field',true); echo '';