web-dev-qa-db-fra.com

Comment télécharger une image depuis une page de paramètres?

Existe-t-il un moyen simple d’inclure une boîte de téléchargement dans votre page de paramètres?

Je construis une page d'options Open Graph et j'aime bien que les utilisateurs téléchargent une image standard directement à partir de cette page.

3
Mark

WordPress fournit une fonction pratique à cette fin: wp_handle_upload() .

En supposant que vous avez déjà le champ de formulaire de fichier approprié dans votre page de paramètres et que vous utilisez register_setting() pour vos options, et donc déjà un rappel de validation des options, gérez simplement les données de champ de formulaire de fichier à l'aide de wp_handle_upload(). Voici un exemple:

<?php
// Validate file fields
else if ( 'file' == $optiondetails['type'] ) {
    if ( isset( $input[$setting] ) ) {
        // Only update setting if input value is in the list of valid options
        $setting_file = $setting . '_file';
        $valid_input[$setting] = ( isset( $_FILES[$setting_file] ) ? theme-slug_image_upload( $setting, $input ) : $valid_input[$setting] );
    }
}
?>

Ensuite, il vous suffit de définir ce rappel theme-slug_image_upload(), en utilisant wp_handle_upload():

<?php
function theme-slug_image_upload( $the_file, $input ) {
    $data = $_FILES[$the_file . '_file'];
    if ( '' != $data['name'] )
        $upload = wp_handle_upload( $_FILES[$the_file . '_file'], array( 'test_form' => false ) );
    else
        $upload['url'] = $input[$the_file];
    return $upload['url'];
}
?>

C'est à peu près tout.

2
Chip Bennett