Добавление рекомендуемого изображения для публикации программно


Как я могу добавить изображение с признаками программно, учитывая URL/имя файла изображения и идентификатор публикации, связанный с ним?

Author: Pim, 2018-09-18

1 answers

Для каждой комбинации изображения/публикации выполните следующие действия. $image_name - это имя файла, $post_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 );

  }
}

При обработке большого количества изображений/сообщений вы можете столкнуться с таймаутом PHP. Если это так, просто запустите функцию еще раз. Существует проверка на наличие изображений, которые уже были прикреплены, так что это не должно быть проблемой.

 3
Author: Pim, 2018-10-17 09:26:16