Bild direkt von der URL auf meinen Server kopieren und in den Upload-Ordner von WordPress hochladen?

Lesezeit: 3 Minuten

Benutzeravatar von vin
Vin

Ich versuche, ein Bild wie unten erwähnt über das PHP-Skript hochzuladen. Ich nehme ein Bild von der URL; Ich habe auf diesen Beitrag Bezug genommen. Eigentlich möchte ich es in meinem Fall in den WordPress-Upload-Ordner hochladen, wo Beitragsbilder hochgeladen werden, und Sie wissen, dass WordPress zur Laufzeit einen Ordner in ‚wp-content/uploads/‘ erstellt und dort Bilder hochlädt. Der Pfad ($save_path) wird also nicht zur Laufzeit entschieden.

$url="http://www.google.co.in/intl/en_com/images/srpr/logo1w.png";
$contents=file_get_contents($url);
$save_path="/path/to/the/dir/and/image.jpg";
file_put_contents($save_path,$contents);

Ich versuche, die WordPress-Funktion „media_handle_upload“ zu verwenden, um Bilder anstelle von „file_put_contents“ hochzuladen, aber ich verstehe nicht, wie ich Dateiobjekte an diese Funktion übergebe, sobald ich den Dateiinhalt erhalte ($contents=file_get_contents($url);). Bitte helfen.

$attachment_id = media_handle_upload( 'my_image_upload', $_POST['post_id'] );

  • Versuche dies : codex.wordpress.org/Function_Reference/media_sideload_image

    – vrajesh

    11. April 2016 um 12:50 Uhr

  • oder: codex.wordpress.org/Function_Reference/wp_insert_attachment

    – rnevius

    11. April 2016 um 12:58 Uhr

  • Wow, großartig … Vielen Dank @vrajesh Auch bitte können Sie mir dasselbe für benutzerdefinierte Felder mitteilen “update_field(‘field_568cbd913301f’, $att[‘attach_id’],$post_id);”, da ich auch das ACF-Plugin verwende.

    – Vin

    11. April 2016 um 13:07 Uhr

  • vielen Dank @rnevius:

    – Vin

    11. April 2016 um 13:07 Uhr

  • seitlich laden . . . verdammt!

    – dg4220

    11. April 2016 um 13:10 Uhr

Dieser Code funktioniert zu 100 %:

include_once( ABSPATH . 'wp-admin/includes/image.php' );
$imageurl="<IMAGE URL>";
$imagetype = end(explode("https://stackoverflow.com/", getimagesize($imageurl)['mime']));
$uniq_name = date('dmY').''.(int) microtime(true); 
$filename = $uniq_name.'.'.$imagetype;

$uploaddir = wp_upload_dir();
$uploadfile = $uploaddir['path'] . "https://stackoverflow.com/" . $filename;
$contents= file_get_contents($imageurl);
$savefile = fopen($uploadfile, 'w');
fwrite($savefile, $contents);
fclose($savefile);

$wp_filetype = wp_check_filetype(basename($filename), null );
$attachment = array(
    'post_mime_type' => $wp_filetype['type'],
    'post_title' => $filename,
    'post_content' => '',
    'post_status' => 'inherit'
);

$attach_id = wp_insert_attachment( $attachment, $uploadfile );
$imagenew = get_post( $attach_id );
$fullsizepath = get_attached_file( $imagenew->ID );
$attach_data = wp_generate_attachment_metadata( $attach_id, $fullsizepath );
wp_update_attachment_metadata( $attach_id, $attach_data ); 

echo $attach_id;

Hier ist ein vollständiges Beispiel:

// $filename should be the path to a file in the upload directory.
$filename="/path/to/uploads/2013/03/filename.jpg";

// The ID of the post this attachment is for.
$parent_post_id = 37;

// Check the type of file. We'll use this as the 'post_mime_type'.
$filetype = wp_check_filetype( basename( $filename ), null );

// Get the path to the upload directory.
$wp_upload_dir = wp_upload_dir();

// Prepare an array of post data for the attachment.
$attachment = array(
    'guid'           => $wp_upload_dir['url'] . "https://stackoverflow.com/" . basename( $filename ), 
    'post_mime_type' => $filetype['type'],
    'post_title'     => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
    'post_content'   => '',
    'post_status'    => 'inherit'
);

// Insert the attachment.
$attach_id = wp_insert_attachment( $attachment, $filename, $parent_post_id );

// Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.
require_once( ABSPATH . 'wp-admin/includes/image.php' );

// Generate the metadata for the attachment, and update the database record.
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );

set_post_thumbnail( $parent_post_id, $attach_id );

Du kannst nachschauen wp_insert_attachment() Für mehr Information

1427740cookie-checkBild direkt von der URL auf meinen Server kopieren und in den Upload-Ordner von WordPress hochladen?

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

Privacy policy