wake-up-neo.com

Speichern eines benutzerdefinierten Feldes im Anhangsfenster in WordPress 3.5

Ich benutze den folgenden Code, um ein benutzerdefiniertes Textfeld in WP 3.5-Anhangsfenster hinzuzufügen (aus dieser Frage # Erweitern des neuen Medien-Uploaders 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' => '<div class="meta_link"><input type="text" /></div>',
        '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 Werte für jeden meiner Anhänge speichern und anschließend abrufen. Das Problem ist jedoch dieser Code speichert KEINEN Wert eines Anhangs mithilfe von AJAX.

Wenn ich für ein Anhangsbild einen Wert in diesem benutzerdefinierten Feld definiere, wird durch die Auswahl eines anderen Bilds anscheinend mein definierter Wert für dieses Bild entfernt. Wenn ich jedoch den Beitrag aktualisiere und das Feld erneut überprüfe, ist der gespeicherte Wert vorhanden.

3
Faisal Khurshid

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

/** 
 * Autorenname und URL-Felder zum Medien-Uploader hinzufügen 
 * 
 * @Param $ form_fields-Array, Felder, die in das Anhangsformular aufgenommen werden sollen 
 * @param $ post Objekt, Anhang Datensatz in der Datenbank 
 * @return $ form_fields, modified form fields 
 */
 Funktion admin_attachment_field_media_author_credit ($ form_fields, $ post) {
 
 $ form_fields ['media-author-name'] = array (
 'label' => 'author name', 
 'input' => 'text ', 
' value '=> get_post_meta ($ post-> ID,' media_author_name ', true) 
 //' helps '=>' Falls angegeben, wird die Autoren-Gutschrift angezeigt '
); 
 
 $ form_fields ['media-author-url'] = array (
 'label' => __ ('Author URL', b ()) , 
 'input' => 'text', 
 'value' => get_post_meta ($ post-> ID, 'media_author_url', true) 
 // 'helps' = > 'Falls angegeben, wird das Autorenguthaben verknüpft' 
); 
 
 return $ form_fields; 
 
} add_filter ('attachment_fields_to_edit', 'admin_attachment_field_media_author_credit', 10, 2); 
 
/** 
 * Save Werte für Autorenname und URL im Medien-Uploader 
 * 
 * @param $ post array, die Post-Daten für die Datenbank 
 * @param $ attachment array, Felder für Anhänge aus dem $ _POST-Formular 
 * @return $ post array, modified post data 
 */
 
 function admin_attachment_field_media_author_credit_save ($ post, $ attachment) {
 
 if (isset ($ attachment ['Name des Medienautors'])) 
 update_post_meta ($ post ['ID'], 'Name des Medienautors', $ attachment ['Name des Medienautors']) ; 
 
 if (isset ($ attachment ['media-author-url'])) 
 update_post_meta ($ post ['ID'], 'media_author_url', $ attachment [ 'media-author-url']); 
 
 $ post zurückgeben; 
 
} add_filter ('attachment_fields_to_save', 'admin_attachment_field_media_author_credit_save', 10, 2); 
 
/** 
 * Speichern Sie die Werte für Autorenname und URL über die AJAX 
 */
 
 -Funktion modal im Media Uploader admin_attachment_field_media_author_credit_ajax_save () {
 
 $ post_id = $ _POST ['id']; 
 
 if (isset ($ _POST ['attachments'] [$ post_id] ['Name des Medienautors'])) 
 update_post_meta ($ post_id, 'Name des Medienautors', $ _POST ['Anhänge'] [$ post_id] ['Name des Medienautors']); 
 
 if (isset ($ _POST ['attachments'] [$ post_id] ['media-author-url']) 
 update_post_meta ($ post_id, 'media_author_url', $ _POST [ 'attachments'] [$ 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!

P.S. Die nächste Herausforderung besteht darin, diese an die im Dokument hochgeladenen Bilder anzuhängen. D.S.

5