web-dev-qa-db-fra.com

Comment enregistrer et récupérer des méta de pièces jointes personnalisées?

J'essaie de sauvegarder si une case à cocher à l'intérieur de l'utilitaire de téléchargement multimédia est cochée, afin que je puisse la récupérer depuis le début.

J'utilise ce code:

function filter_attachment_fields_to_edit( $form_fields, $post ) {
    $foo = (bool) get_post_meta($post->ID, 'foo', true);

    $form_fields['foo'] = array(
        'label' => 'Is Foo',
        'input' => 'html',
        'html' => '<label for="attachments-'.$post->ID.'-foo"> ' . '<input type="checkbox" id="attachments-'.$post->ID.'-foo" name="attachments['.$post->ID.'][foo]" value="1"'.($foo ? ' checked="checked"' : '').' /> Yes</label>  ',
        'value' => $foo,
        'helps' => 'Check for yes'
    );
    return $form_fields;
}

à partir de cette question: Comment ajouter un élément de case à cocher à l'éditeur de pièces jointes avec un exemple

Je dois admettre que je ne comprends pas complètement comment ce code est mis en place. J'ai essayé d'utiliser cette fonction pour enregistrer:

function image_attachment_fields_to_save($post, $attachment) {  
    if( isset($attachment['imageLinksTo']) ){  
        update_post_meta($post['ID'], '_imageLinksTo', $attachment['imageLinksTo']);  
    }  
    return $post;  
} 

add_filter("attachment_fields_to_edit", "image_attachment_fields_to_edit", null, 2); 
add_filter("attachment_fields_to_save", "image_attachment_fields_to_save", null, 2); 
1

L'identifiant de champ doit correspondre dans les deux fonctions, donc si votre identifiant de champ est foo, lorsque vous enregistrez, vous devez rechercher cet identifiant et lorsque vous enregistrez un champ de case à cocher il est intelligent de le supprimer s'il n'est pas défini:

function image_attachment_fields_to_save($post, $attachment) {  
    if( isset($attachment['foo']) ){  
        update_post_meta($post['ID'], 'foo', $attachment['foo']);  
    }else{
         delete_post_meta($post['ID'], 'foo' );
    }
    return $post;  
}

add_filter("attachment_fields_to_save", "image_attachment_fields_to_save", null, 2);
1
Bainternet