wake-up-neo.net

Programmgesteuertes Hinzufügen von ausgewählten Bildern zum Posten

Wie füge ich ein empfohlenes Bild programmgesteuert hinzu, wenn ich die URL/den Dateinamen des Bildes und die zugehörige Beitrags-ID angegeben habe?

1
Pim

Führen Sie für jede Kombination aus Bild und Beitrag Folgendes aus. $image_name ist der Dateiname, $post_id ist die Beitrags-ID.

if( $image_name != '' && !has_post_thumbnail( $post_id ) ){
  $base = get_stylesheet_directory();
  $imgfile= $base . '/import/' . $image_name; // Images are stored inside an imports folder, in the theme directory
  $filename = basename($imgfile);
  $upload_file = wp_upload_bits($filename, null, file_get_contents($imgfile));
  if (!$upload_file['error']) {
    $wp_filetype = wp_check_filetype($filename, null );
    $attachment = array(
      'post_mime_type' => $wp_filetype['type'],
      'post_parent' => 0,
      'post_title' => preg_replace('/\.[^.]+$/', '', $filename),
      'post_content' => '',
      'post_status' => 'inherit'
    );
    $attachment_id = wp_insert_attachment( $attachment, $upload_file['file'], $post_id );

    if (!is_wp_error($attachment_id)) {
      require_once(ABSPATH . "wp-admin" . '/includes/image.php');
      $attachment_data = wp_generate_attachment_metadata( $attachment_id, $upload_file['file'] );
      wp_update_attachment_metadata( $attachment_id,  $attachment_data );
    }
    set_post_thumbnail( $post_id, $attachment_id );

  }
}

Wenn Sie mit vielen Bildern/Posts arbeiten, kann es zu einem Timeout von PHP kommen. Führen Sie in diesem Fall die Funktion einfach erneut aus. Es gibt eine Überprüfung für Bilder, die bereits angehängt wurden, sodass dies kein Problem sein sollte.

3
Pim