web-dev-qa-db-fra.com

télécharger l'image sélectionnée dans le type de message personnalisé à partir de l'interface

J'essaie de télécharger une image sélectionnée depuis une interface et mon identifiant est également inséré dans post_meta, mais cette image n'est pas téléchargée dans la médiathèque.

https://www.screencast.com/t/Uakjtxi9ojv

Voici mon code.

            $uploaddir = wp_upload_dir();
            $file = $_FILES['cptFeatured'];

            $uploadfile = $uploaddir['path'] . '/' . basename( $file['name'] );

            move_uploaded_file( $file["tmp_name"] , $uploadfile );
            $filename = basename( $uploadfile );

            $wp_filetype = wp_check_filetype(basename($filename['name']), null );

            $attachment = array(
                'post_mime_type' => $wp_filetype['type'],
                'post_title' => preg_replace('/\.[^.]+$/', '', $filename),
                'post_content' => '',
                'post_status' => 'inherit',
                'menu_order' => $_i + 1000
            );


            $attach_id = wp_insert_attachment( $attachment, $uploadfile, $cpt_id );

            update_post_meta($cpt_id, '_thumbnail_id', $attach_id);
            set_post_thumbnail( $cpt_id, $attach_id );  

cptFeatured est le nom du champ de saisie. et cpt_id est post id.

1
user141720

Vous utilisez la fonction wp_insert_attachment () () , qui indique ce qui suit dans le Codex:

Cette fonction fait partie de l'API de bas niveau utilisée par WordPress pour la gestion des pièces jointes. Pour effectuer en une fois le processus complet de chargement et d’insertion des pièces jointes, vous souhaiterez plutôt utiliser media_handle_upload () à la place.

Par conséquent, pour générer automatiquement le redimensionnement de l'image et une entrée de pièce jointe dans la base de données, utilisez plutôt la fonction media_handle_upload () .

1
Swen