Importieren Sie WordPress-Beitragsbilder als vorgestelltes Bild von einer externen URL

Lesezeit: 3 Minuten

Ich habe derzeit eine CSV-Datei mit 2 Spalten – eine für die Post-ID und eine für die Bild-URL. Es gibt 10.000 Beiträge und damit 10.000 Bilder.

Ich muss diese in WordPress importieren und jedes Bild als Featured Image festlegen.

Wie kann dies erreicht werden? Mir ist bewusst, dass es Plugins gibt, die das vorgestellte Bild von einer externen URL anzeigen, aber ich muss die Bilder tatsächlich auf denselben Server importieren (da die neue Website auf einem anderen Server erstellt wird, wird das Domain-DNS aktualisiert, um zu gehen live – wodurch die alten vollständigen Pfad-URLs unbrauchbar werden).

Ich möchte Davemacs Antwort ergänzen, um sie zu vervollständigen.

Sie müssten post mit programmgesteuert einfügen wp_insert_post() und speichern Sie die Post-ID, die von der Funktion zurückgegeben wird.

Du würdest dann laufen media_sideload_image() Um das Bild von der URL auf die wp-Site herunterzuladen, speichern Sie den zurückgegebenen Wert als Variable, die das HTML-Element des Bildes ist, z <img src="http:mywpsite/wp-content/....">.

Strippen Sie die Variable, so dass Sie nur mit dem src übrig bleiben, zB http:mywpsite/wp-content/.... und verwenden Sie diese für attachment_url_to_postid() die die Anhangs-ID zurückgibt.

Damit haben wir alle notwendigen Komponenten, um unser Ziel zu erreichen. Verwenden Sie nun die Beitrags-ID und die Anhangs-ID, um die vorgestellten Bilder festzulegen set_post_thumbnail()

Das ist es!

Der Code würde ein bisschen wie aussehen

$post_id = wp_insert_post($array);//create new post and save its id
$img = media_sideload_image( $url, $post_id);//download image to wpsite from url
$img = explode("'",$img)[1];// extract http.... from <img src'http...'>
$attId = attachment_url_to_postid($img);//get id of downloaded image
set_post_thumbnail( $post_id, $attId );//set the given image as featured image for the post

  • Vielen Dank, Liebes 🙂 Du hast meine Zeit gespart.

    – Arman H

    2. März um 11:06 Uhr

Benutzeravatar von davemac
davemac

Die Antwort von @omer Farooq ist hilfreich, aber um dies zu erweitern und das Bild als vorgestelltes Bild für den Beitrag festzulegen (wie von OP gefordert), können Sie Folgendes tun:

// will return the attachment id of the sideloaded img
$image_id = media_sideload_image( $image_url, $post_id, $filename, 'id' );
    
// set as featured image
set_post_thumbnail( $post_id, $image_id );

WordPress hat bereits eine eingebaute Funktion namens media_sideload_image für genau diese Art von Funktionalität. Diese Funktion lädt ein Bild herunter und hängt es an Ihren Beitrag an.

Nehmen wir also an, Sie geben alle Datensätze aus CSV in ein Array aus, und es hat 1000 Indizes mit jeweils 2 Elementen “post_id” und “image_url”. Jetzt wäre die image_url des ersten Artikels $csv_items[0][‘image_url’]. Sobald Sie dies haben, können Sie das Array einfach foreachen und an die relevanten Post-IDs anhängen.

<?php 
foreach($csv_items as $csv_item){
    $image = media_sideload_image($csv_item['image_url'], $csv_item['post_id']);
}?>

  • Dadurch werden Bilder an den Beitrag angehängt, aber das Bild wird nicht als Beitragsbild für den Beitrag festgelegt – was der Op gefordert hat. Dazu können wir die verwenden $return Parameter ein media_sideload_image und stelle es ein id. Dadurch erhalten wir die Anhangs-ID, die wir verwenden können set_post_thumbnail um das Bild als Beitragsbild für den Beitrag festzulegen.

    – davemac

    17. Dezember 2017 um 4:41 Uhr


1427100cookie-checkImportieren Sie WordPress-Beitragsbilder als vorgestelltes Bild von einer externen URL

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy