Вы можете установить изображение как миниатюру поста, когда оно находится в вашей медиатеке. Чтобы добавить изображение в медиатеку, вам необходимо загрузить его на свой сервер. В WordPress уже есть функция для размещения изображений в вашей медиатеке, вам нужен только скрипт, который загружает ваш файл.
Использование:
Generate_Featured_Image( '../wp-content/my_image.jpg', $post_id );
// $post_id is Numeric ID... You can also get the ID with:
wp_insert_post()
Функция:
function Generate_Featured_Image( $image_url, $post_id ){
$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 );
$res1= wp_update_attachment_metadata( $attach_id, $attach_data );
$res2= set_post_thumbnail( $post_id, $attach_id );
}
http://codex.wordpress.org/Function_Reference/wp_upload_dir
http://codex.wordpress.org/Function_Reference/wp_insert_attachment
РЕДАКТИРОВАТЬ: Добавлено создание пути
http://codex.wordpress.org/Function_Reference/wp_mkdir_p
Попробуйте использовать
set_post_thumbnail()
.Редактирование Отто: Вы уточнили свой вопрос, поэтому я уточню ответ, который дал Чип.
По сути, вам также нужно сделать «вложение» для поста. Когда изображение загружается в медиатеку WordPress, для него создается специальная запись с типом вложения. Это вложение связано с каким-то конкретным сообщением через идентификатор post_parent.
Таким образом, если вы знаете идентификатор вложения, то вызов set_post_thumbnail с объектом сообщения или идентификатором и идентификатором вложения просто установит флаг миниатюры сообщения.
Если вы еще не создали вложение, сначала вам нужно будет это сделать. Самый простой способ сделать это с
wp_insert_attachment()
. Эта функция принимает массив из нескольких параметров, имя файла (файл должен быть уже в правильном каталоге загрузки) и идентификатор сообщения родительского сообщения, к которому вы хотите прикрепить вложение.Просто загрузить файл и прикрепить его к сообщению ничего не делает автоматически. Это просто своего рода механизм категоризации. Например, механизм галереи использует прикрепленные изображения поста для создания [галереи] для этого поста. Миниатюра для сообщения - это только одно из прикрепленных изображений, которое было установлено в качестве миниатюры.
Больше информации о том, как использовать wp_insert_attachment, можно найти в кодексе (ссылка выше).
источник
Я хотел бы улучшить ответ Робса, используя основные функции WP
download_url
иmedia_handle_sideload
источник
set_post_thumbnail()
это лучшая функция для этого требования.Я думаю, вы найдете идентификатор вложения через
get_children()
илиget_posts()
. У результата есть массив, и внутри этого массива есть идентификатор. Следующий пример для тестирования; надеюсь это работает; пиши без тестов, только на пустом месте.Для вашего требования важно, чтобы вы изменились
get_the_ID()
вместе со своимpost-ID
; вернуть идентификатор вложения, и вы можете использовать Fothset_post_thumbnail()
.источник
Просто нашел и сделал намного проще, работает, но я не скруббер безопасности
просто или как? После получения нужных файлов WordPress обрабатывает мультимедиа и загружает его, а затем устанавливает его в качестве эскиза.
источник