Используйте PHP для сохранения изображений в каталог содержимого WordPress
Я пытаюсь переместить агрегатор ссылок на новости, который я создал, на WordPress, чтобы я мог добавлять свои собственные сообщения вместе с фидом. Я перебирал ссылки и миниатюры изображений с помощью PHP, но у меня возникли проблемы с определением того, как заставить изображение правильно отображаться в WordPress, когда я возиться с конверсией. Вот фрагмент кода, в котором я использую библиотеку WideImage, чтобы обрезать фотографию. Но что мне делать, чтобы сохранить его в нужном месте, предположительно в каталоге wp-content? (И да, я знаю, что позже я могу программно изменить структуру папок месяц-год, просто используя это в качестве отправной точки.)
Я нашел эту ссылку, которая, по-видимому, относится к части процесса, и фотографии сохраняются в папке, они просто отображаются серыми полями в медиатеке WordPress, и я получаю сообщение об ошибке при использовании ABSPATH.
if(exif_imagetype($photoURL)) {
// Creates unique image file name
$imageFileName = 'RNRF_' . $seconds . '.jpg';
// Creates reference location to be saved in database
$image_loc = $imageFileName;
WideImage::load($photoURL)->resize(640, 400, 'outside')->crop("center", "center", 640, 400)->saveToFile('../wp-content/uploads/2017/11/' . $imageFileName, 50);
$image_location_full = "http://s.wptut/wp-content/uploads/2017/11/" . $imageFileName;
// $filename should be the path to a file in the upload directory.
$filename = 'wp-content/uploads/2017/11/' . $imageFileName;
// The ID of the post this attachment is for.
$parent_post_id = $new_id;
// Check the type of file. We'll use this as the 'post_mime_type'.
// $filetype = wp_check_filetype( basename( $filename ), null );
// Get the path to the upload directory.
$wp_upload_dir = wp_upload_dir();
// Prepare an array of post data for the attachment.
$attachment = array(
'guid' => 'http://s.wptut/wp-content/uploads/2017/11/' . basename( $filename ),
'post_mime_type' => "image/jpeg",
'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
'post_content' => '',
'post_status' => 'inherit'
);
// Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.
require_once( ABSPATH . 'wp-admin/includes/image.php' );
// Insert the attachment.
$attach_id = wp_insert_attachment( $attachment, $filename, $parent_post_id );
// Generate the metadata for the attachment, and update the database record.
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
set_post_thumbnail( $parent_post_id, $attach_id );
}