Я пишу собственную тему / плагин, в котором мне нужно программно загружать изображения с определенных веб-страниц в папку загрузки, а затем вставлять их как часть поста.
Итак, я смог найти URL-адрес изображения программно, а затем мне нужно сохранить их в папке загрузки в разделе wp-content, однако в этой папке есть определенная структура папок WordPress для сохраненных изображений.
Теперь мой вопрос: есть ли WordPress API или функция или метод, которые позволят мне загружать изображения из Интернета и сохранять их в папке загрузки? И если так, что это.
В противном случае, что я должен сделать, чтобы сохранить эти изображения?
Пока я делаю это
$filetype = wp_check_filetype(basename($image_file_name), null );
$upload_dir = wp_upload_dir();
$attachment = array(
'guid' => $upload_dir['url'] . '/' . basename( $image_file_name ),
'post_mime_type' => $filetype['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($image_file_name)),
'post_content' => '',
'post_status' => 'inherit'
);
$attachment_id = wp_insert_attachment( $attachment, $image_file_name, $post_id );
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $image_file_name );
wp_update_attachment_metadata( $attachment_id, $attachment_data );
set_post_thumbnail( $post_id, $attachment_id );
Но приведенный выше код дает мне следующую ошибку
imagejpeg(http://wscdn.bbc.co.uk/worldservice/assets/images/2013/07/21/130721173402_egypts_new_foreign_minister_fahmy_304x171_reuters-150x150.jpg): failed to open stream: HTTP wrapper does not support writeable connections in C:\dev\wordpress\pterodactylus\wp-includes\class-wp-image-editor.php on line 334
И после дальнейшего расследования, похоже, ошибка вызвана
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $image_file_name );
И даже после дальнейшего расследования в документации wp_insert_attachment()
говорится, что The file MUST be on the uploads directory
в отношении$image_file_name
Итак, как мне загрузить изображение и правильно сохранить его в своем сообщении?
Большое спасибо.
источник
Ответы:
Недавно мне пришлось сделать это с помощью ночного скрипта cron для потока в социальных сетях. $ parent_id - это идентификатор сообщения, к которому вы хотите прикрепить изображение.
например:
источник
Вы не опубликовали код, используемый для получения и сохранения изображения, поэтому невозможно сказать, где находится ошибка.
Попробуйте этот код для захвата и сохраните изображение:
Затем просто используйте эти функции в сочетании с вашим кодом, например так:
Помните также, что вы должны включить wp-admin / includes / image.php в свой код, чтобы эта функция
wp_generate_attachment_metadata()
работала, см. КодексНадеюсь, что это поможет, но, пожалуйста, обратите внимание, что весь код здесь не проверен.
источник
if ( $mirror['error'] ) return false; //maybe log error
. Также нет проверки, является ли полученное содержимое фактически изображением$filetype = wp_check_filetype($filename, NULL ); if ( ! substr_count($filetype['type'], 'image') ) return false;
Вы можете использовать эту функцию для удаленной загрузки изображения в папку загрузки и установки его в качестве избранного изображения.
Применение:
источник
Просто используйте функцию wp (v2.6.0 +) по умолчанию:
источник