Используйте 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 );


}

0 ответов

Другие вопросы по тегам