Ich schreibe ein benutzerdefiniertes Thema / Plugin, in dem ich Bilder programmgesteuert von bestimmten Webseiten in den Upload-Ordner herunterladen und sie dann als Teil des Beitrags einfügen muss.
So konnte ich die Bild-URLs programmgesteuert finden und sie dann im Upload-Ordner unter wp-content speichern. Dieser Ordner enthält jedoch eine bestimmte WordPress-Ordnerstruktur für die gespeicherten Bilder.
Meine Frage ist nun, gibt es eine WordPress-API oder -Funktion oder -Methode, mit der ich Bilder aus dem Internet herunterladen und im Upload-Ordner speichern kann? Und wenn ja, was ist das?
Was soll ich sonst tun, um diese Bilder zu speichern?
Bisher mache ich das
$filetype = wp_check_filetype(basename($image_file_name), null );
$upload_dir = wp_upload_dir();
$attachment = array(
'guid' => $upload_dir['url'] . '/' . basename( $image_file_name ),
'post_mime_type' => $filetype['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($image_file_name)),
'post_content' => '',
'post_status' => 'inherit'
);
$attachment_id = wp_insert_attachment( $attachment, $image_file_name, $post_id );
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $image_file_name );
wp_update_attachment_metadata( $attachment_id, $attachment_data );
set_post_thumbnail( $post_id, $attachment_id );
Aber der obige Code gibt mir den folgenden Fehler
imagejpeg(http://wscdn.bbc.co.uk/worldservice/assets/images/2013/07/21/130721173402_egypts_new_foreign_minister_fahmy_304x171_reuters-150x150.jpg): failed to open stream: HTTP wrapper does not support writeable connections in C:\dev\wordpress\pterodactylus\wp-includes\class-wp-image-editor.php on line 334
Und nach weiteren Untersuchungen sieht es so aus, als ob der Fehler durch verursacht wird
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $image_file_name );
Und nach noch weiteren Untersuchungen heißt es in der Dokumentation für wp_insert_attachment()
, dass The file MUST be on the uploads directory
in Bezug auf die$image_file_name
Wie lade ich ein Bild herunter und speichere es korrekt in meinem Beitrag?
Vielen Dank.
quelle
Antworten:
Ich musste dies kürzlich über ein nächtliches Cron-Skript für einen Social-Media-Stream tun. $ parent_id ist die ID des Beitrags, an den Sie das Bild anhängen möchten.
Ex:
quelle
Sie haben den Code zum Abrufen und Speichern des Bildes nicht veröffentlicht, daher ist es unmöglich zu sagen, wo der Fehler liegt.
Probieren Sie diesen Code aus und speichern Sie das Bild:
Verwenden Sie dann einfach diese Funktionen in Kombination mit Ihrem Code wie folgt:
Denken Sie auch daran , dass Sie müssen wp-admin / includes / image.php im Code für die Funktion enthalten ,
wp_generate_attachment_metadata()
um Arbeit finden Sie im CodexHoffe diese Hilfe, aber bitte beachten Sie, dass der gesamte Code hier nicht getestet wird.
quelle
if ( $mirror['error'] ) return false; //maybe log error
. Es gibt auch keine Überprüfung, ob der abgerufene Inhalt tatsächlich ein Bild ist$filetype = wp_check_filetype($filename, NULL ); if ( ! substr_count($filetype['type'], 'image') ) return false;
Mit dieser Funktion können Sie ein Bild per Fernzugriff in den Upload-Ordner hochladen und als ausgewähltes Bild festlegen.
Verwendungszweck:
quelle
Verwenden Sie einfach die Standardfunktion wp (v2.6.0 +):
quelle