web-dev-qa-db-de.com

Bild zum Posten von einer externen URL hinzufügen

Ich mache ein Plugin, das Medien von externen APIs abrufen kann, und wenn ich darauf klicke (auf dem Admin), füge es einen neuen Beitrag mit den Medien, seiner Beschriftung usw. ein.

Also, jetzt füge ich einen neuen Post bei Klick ein: funktioniert gut. Ich habe so etwas gemacht:

$title = $_POST['title'];
$content = $_POST['content'];
$id = $_POST['id'];
$imgSrc = $_POST['imgSrc'];

$my_post = array(
  'post_name'     => $id,
  'post_title'    => $title,
  'post_content'  => $content,
  'post_status'   => 'publish',
  'post_author'   => 1,
  'post_category' => array(8,39)
);

wp_insert_post( $my_post );

Nun, da stecke ich fest. Ich habe eine Bild-URL ($imgSrc), die ich meinem Beitrag hinzufügen möchte. Was ich machen möchte ist:

  1. laden Sie diese URL in die Mediathek hoch: Ich weiß nicht, wie ich das machen soll
  2. hänge es an den Post an: Ich habe etwas mit wp_insert_attachment gesehen (aber ich weiß nicht, wie ich damit umgehen soll)

Wie kann ich das machen, da ich PHP so gut wie nicht mag?

2
enguerranws

Für diejenigen, die wissen würden:

$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 );
2
enguerranws