Aktualisiere (function) das vorgestellte Bild eines Posts, sobald sich $ image_url ändert

jeder! Ich habe ein WordPress-Plugin erstellt, das separate Instagram-Fotos und dann Shortcodes enthält. Die Shortcodes zeigen Bilder an, die nicht im WP-Ordner, sondern direkt in Instagram gespeichert sind. Es erhöht die Ladezeiten des Servers drastisch.

Also habe ich in WP dev Foren gesucht und diese function gefunden, die das vorgestellte Bild für den angegebenen Beitrag setzt.

function Generate_Featured_Image( $image_url, $post_id ){ $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 ); $res1= wp_update_attachment_metadata( $attach_id, $attach_data ); $res2= set_post_thumbnail( $post_id, $attach_id ); } 

Was ich vermisse, ist die Tatsache, dass die Fotos, die ich mache, in Kürze aktualisiert werden und sich das vorgestellte Bild danach nicht mehr ändert. Gibt es eine Möglichkeit, das vorgestellte Bild zu aktualisieren, sobald ein neues Instagram-Foto hochgeladen wird? Oder nur jede Stunde oder so. Vielen Dank, Jungs!

Solutions Collecting From Web of "Aktualisiere (function) das vorgestellte Bild eines Posts, sobald sich $ image_url ändert"

Sobald Sie die URL des Bildes von Instagram erhalten haben und die id des Posts kennen, können Sie die function Ihrer Frage verwenden. Sie müssen den Code für die einzige if statement ändern:

 if( wp_mkdir_p( $upload_dir[ 'path' ] ) ) { $file = $upload_dir[ 'path' ] . '/' . $filename; } else { $file = $upload_dir[ 'basedir' ] . '/' . $filename; } 

Mit dieser function wird das Bild in die Medienbibliothek hochgeladen und als Vorstellungsbild für Ihren Post festgelegt. Geprüft!

Oder, basierend auf dem Vorschlag von @TomJNowell aus seinem Kommentar, verwende diesen Code:

 $attach_id = media_sideload_image( $image_url, $post_id, 'Instagram image', 'id' ); set_post_thumbnail( $post_id, $attach_id );