web-dev-qa-db-fra.com

L'image sélectionnée est téléchargée, jointe et définie, mais n'apparaît que dans la médiathèque

J'utilise la fonction dans cette réponse à télécharger, attacher puis [set_the_post_tumbnail] [2]/image sélectionnée à un article que je crée à partir d'un Flux RSS.

J'ai effectué un test et le résultat indique que l'ID de pièce jointe correspond à mon ID de vignette. J'ai vérifié dans la médiathèque et il attribue les identifiants corrects en fonction de get_post_thumbnail_id mais le problème est la méta-boîte de mon image sélectionnée n’affiche pas l’image par le biais du tableau de bord ou lors de l’utilisation de [obtenir la vignette du message] [4] dans mon modèle.

Est-ce que je manque des étapes ici? Le code provient principalement de la réponse liée ci-dessus avec quelques tests à la fin.

global $wp_query;
                wp_insert_post($my_post); // create a new post
                $post_id = $wp_query->post->ID;  // get the ID for the new post


                $image_url = $thumbnail;
                $upload_dir = wp_upload_dir();
                $image_data = file_get_contents($image_url);
                $filename = basename($image_url);
                if(wp_mkdir_p($upload_dir['path']))
                    $file = $upload_dir['path'] . '/' . $filename;
                else
                    $file = $upload_dir['basedir'] . '/' . $filename;
                file_put_contents($file, $image_data);

                $wp_filetype = wp_check_filetype($filename, null );
                $attachment = array(
                    'post_mime_type' => $wp_filetype['type'],
                    'post_title' => sanitize_file_name($filename),
                    'post_content' => '',
                    'post_status' => 'inherit'
                );
                $attach_id = wp_insert_attachment( $attachment, $file, $post_id );
                require_once(ABSPATH . 'wp-admin/includes/image.php');
                $attach_data = wp_generate_attachment_metadata( $attach_id, $file );
                wp_update_attachment_metadata( $attach_id, $attach_data );

                set_post_thumbnail( $post_id, $attach_id );
                echo "Attachment ID: " . $attach_id;
                $post_thumbnail_id = get_post_thumbnail_id( $post_id );             
                echo "Thumbnail ID: " . $post_thumbnail_id; 
                get_the_post_thumbnail($post_id, 'full'); 
1
Sean

Au lieu de

wp_insert_post($my_post); // create a new post                
$post_id = $wp_query->post->ID;  // get the ID for the new post

essaye ça:

$post_id = wp_insert_post($my_post); // create a new post

pour obtenir l'ID de poste inséré.

1
birgire