Benutzerdefiniertes Feld im Anlagenfenster in WordPress 3.5 speichern

Ich verwende den folgenden Code, um ein benutzerdefiniertes Textfeld in WP 3.5 Attachment Window hinzuzufügen (aus dieser Frage # Expanding new Media Uploader in WordPress 3.5 ) …

add_filter( 'attachment_fields_to_edit', 'xf_attachment_fields', 10, 2 ); function xf_attachment_fields( $fields, $post ) { $meta = get_post_meta($post->ID, 'meta_link', true); $fields['meta_link'] = array( 'label' => 'More Media Management', 'input' => 'text', 'value' => $meta, // 'html' => '', 'show_in_edit' => true, ); return $fields; } add_filter( 'attachment_fields_to_save', 'xa_update_attachment_meta', 4); function xa_update_attachment_meta($attachment){ global $post; update_post_meta($post->ID, 'meta_link', $attachment['attachments'][$post->ID]['meta_link']); return $attachment; } add_action('wp_ajax_save-attachment-compat', 'xa_media_xtra_fields', 0, 1); function xa_media_xtra_fields() { $post_id = $_POST['id']; $meta = $_POST['attachments'][$post_id ]['meta_link']; update_post_meta($post_id , 'meta_link', $meta); clean_post_cache($post_id); } 

Dieser Code fügt das Feld dort hinzu und ich kann auch den Wert für einen meiner Anhänge speichern und anschließend abrufen. Aber das Problem ist, dass dieser Code den Wert eines Anhangs nicht speichert, indem er AJAX verwendet.

Wenn ich für jedes Anhangsbild irgendeinen Wert in diesem benutzerdefinierten Feld definiere, wird das Auswählen eines anderen Bildes meinen definierten Wert für dieses Bild offensichtlich entfernen. Wenn ich jedoch den Beitrag aktualisiere und das Feld erneut überprüfe, ist der gespeicherte Wert vorhanden.

Solutions Collecting From Web of "Benutzerdefiniertes Feld im Anlagenfenster in WordPress 3.5 speichern"

Ich wollte in der Lage sein, Autoreninformationen zu meinen Anhängen hinzuzufügen und diesen Code mit dem Verweis, auf den Sie sich beziehen, zusammenzuführen: http://www.billerickson.net/wordpress-add-custom-fields-media-gallery/ . Ich habe es geschafft, über AJAX vollständig im modalen Fenster zu arbeiten. Der modifizierte Code ist wie folgt:

 / **
  * Fügen Sie Autorenname und URL-Felder zum Medien-Uploader hinzu
  *
  * @param $ form_fields Array, Felder, die in das Formular für Anhänge eingefügt werden sollen
  * @param $ post-Objekt, Anlagensatz in der database
  * @return $ form_fields, modifizierte Formularfelder
  * /
 function admin_attachment_field_media_author_credit ($ form_fields, $ post) {

     $ form_fields ['media-autorn-name'] = Array (
         'label' => 'Autorenname',
         'Eingabe' => 'Text',
         'Wert' => get_post_meta ($ post-> ID, 'media_author_name', true)
         // 'help' => 'Falls angegeben, wird das Autoren-Guthaben angezeigt'
     );

     $ form_fields ['media-autoren-url'] = array (
         'label' => __ ('Autoren-URL', b ()),
         'Eingabe' => 'Text',
         'Wert' => get_post_meta ($ post-> ID, 'media_author_url', true) 
         // 'helfe' => 'Wenn angegeben, wird das Autoren-Guthaben verknüpft'
     );

     Rückgabe $ form_fields;

 } add_filter ('attachment_fields_to_edit', 'admin_attachment_field_media_author_credit', 10, 2);

 / **
  * Speichern Sie die Werte von Autorname und URL im Medien-Uploader
  *
  * @param $ post-Array, die Post-Daten für die database
  * @param $ attachment array, Anhang Felder von $ _POST Formular
  * @ return $ post-Array, modifizierte Post-Daten
  * /

 function admin_attachment_field_media_author_credit_save ($ post, $ attachment) {

     if (isett ($ attachment ['medienautorenname']))
         update_post_meta ($ post ['ID'], 'media_author_name', $ anhang ['media-author-name']);

     if (isset ($ anhang ['media-autoren-url']))
         update_post_meta ($ post ['ID'], 'media_author_url', $ Anhang ['media-author-url']);

     return $ post;

 } add_filter ('attachment_fields_to_save', 'admin_attachment_field_media_author_credit_save', 10, 2);

 / **
  * Speichern Sie die Werte von Autorname und URL in Media Uploader Modal über AJAX
  * /

 function admin_attachment_field_media_author_credit_ajax_save () {

     $ post_id = $ _POST ['id'];

     if (isset ($ _POST ['Anhänge'] [$ post_id] ['media-author-name']))
         update_post_meta ($ post_id, 'media_author_name', $ _POST ['Anhänge'] [$ post_id] ['media-author-name']);

     if (isset ($ _POST ['Anhänge'] [$ post_id] ['media-author-url']))
         update_post_meta ($ post_id, 'media_author_url', $ _POST ['Anhänge'] [$ post_id] ['media-author-url']);

     clean_post_cache ($ post_id);

 } add_action ('wp_ajax_save-attachment-compat', 'admin_attachment_field_media_author_credit_ajax_save', 0, 1); 

Hoffe das war hilfreich!

PS Die nächste Herausforderung besteht darin, diese an Bilder anzuhängen, die im Dokument hochgeladen wurden. DS