Как добавить медиафайлы с помощью PHP

У меня более 1000 изображений на моем веб-сервере, загруженных с FTP в локальной папке ( /home/chris/pictures )

Есть ли способ добавить их как хорошо известный медиа для WordPress в PHP и получить их идентификатор?

 while ( $the_query->have_posts() ) : $the_query->the_post(); $post_id = get_the_ID(); $filemakerID = get_post_meta($post_id, 'filemaker_id', true); $file['url']='/home/chris/picture_export/'.$filemakerID.'.jpeg'; $file['type'] = 'image/jpeg'; //THE DREAMED FUNCTION WOULD BE USED THIS WAY $photo_id = awesome_function( $file, $post_id); add_post_meta($post_id, 'photo', $photo_id ); } 

Как вы заметили, моя фотография также используется в пользовательской полевой photo .

После нескольких часов работы в google dans codex я заметил, насколько плохо документированы эти функции. Возможно, я просто не мог найти правильные ключевые слова для поиска.

Solutions Collecting From Web of "Как добавить медиафайлы с помощью PHP"

Если я правильно понимаю, у каждого сообщения есть файловый мастер, и у каждого файлового мастера есть только одна фотография? Структура неясна.

В любом случае, одним из способов является использование media_sideload_image как media_sideload_image ниже.

Однако media_sideload_image НЕ будет работать с локальными файлами (путь к вашей файловой системе), поэтому вам нужно изменить свой файл $ [url] на допустимый URL (http://yourhomepage.com/chris/pictures, для пример). Если вы не можете этого сделать, вам нужно использовать wp_upload_bits и wp_insert_attachment , но это намного труднее и труднее.

 function awesome_function($file, $post_id) { require_once(ABSPATH . 'wp-admin' . '/includes/image.php'); require_once(ABSPATH . 'wp-admin' . '/includes/file.php'); require_once(ABSPATH . 'wp-admin' . '/includes/media.php'); // upload image to server media_sideload_image($file['url'], $post_id); // get the newly uploaded image $attachments = get_posts( array( 'post_type' => 'attachment', 'number_posts' => 1, 'post_status' => null, 'post_parent' => $post_id, 'orderby' => 'post_date', 'order' => 'DESC',) ); // returns the id of the image return $attachments[0]->ID; }