Установите изображение для избранного по URL автоматически сгенерированной миниатюры видео PHP

Вопрос или проблема

// Установить созданное видео эскизом в качестве изображение записи***

если(isset($posted_data['video-file']) && $posted_data['video-file'] != ''){
              //Подождите 10 секунд, чтобы создать эскиз   
               sleep(10);
              //  $file_location = '';
                если(!$contact_form_7){
                    $file_location = $posted_data['video-file'];
                } еще {
                    $file_name = $upload_dir['basedir'] . "https://wordpress.stackexchange.com/" .$filename."_thumb1.jpg";
                    $uploaded_files = $contact_form_7->uploaded_files();
                    $file_location = $upload_dir['basedir'] . "https://wordpress.stackexchange.com/" .$filename."_thumb1.jpg";

                }
                $res2 = set_post_thumbnail( $new_ID, $file_name);

            } 

set_post_thumbnail() требует, чтобы второй параметр был int для идентификатора вложения id, поэтому оператор $res2 = set_post_thumbnail( $new_ID, $file_name); не работает.

Сначала вам нужно добавить изображение в базу данных в качестве вложения, а затем вы сможете использовать его id, чтобы установить его как эскиз.

Смотрите этот пример для получения дополнительной помощи и подробностей о том, как установить изображение в качестве изображения записи.

Ответ или решение

Установка изображения миниатюры из URL автоматически сгенерированного видеотренда в PHP

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

Основные шаги решения проблемы

Для начала, необходимо напомнить, что метод set_post_thumbnail() ожидает второй параметр в формате int, который представляет собой ID прикрепленного файла (в данном случае — изображения). Исходный код, предоставленный в условии, пытается передать URL изображения вместо его ID, что приводит к ошибке. Нужно выполнить следующие шаги:

  1. Получить и загрузить изображение: Сначала нужно загрузить сгенерированное изображение на сервер.
  2. Добавить изображение в базу данных как вложение: После загрузки изображения, мы должны создать запись в базе данных WordPress, чтобы получить ID этого вложения.
  3. Установить миниатюру: Используя полученный ID, мы можем установить миниатюру для поста с помощью функции set_post_thumbnail().

Пример кода

Вот пример кода, который демонстрирует этот процесс:

function set_video_thumbnail($posted_data, $new_ID) {
    // Убедитесь, что видео-загружено
    if (isset($posted_data['video-file']) && $posted_data['video-file'] != '') {
        // Ожидание 10 секунд для генерации миниатюры
        sleep(10);

        $video_url = $posted_data['video-file'];
        $thumbnail_url = $video_url . '_thumb1.jpg'; // Форматируем URL для миниатюры

        // Загружаем изображение
        $image = media_sideload_image($thumbnail_url, $new_ID, null, 'id');

        if (is_wp_error($image)) {
            error_log('Ошибка загрузки изображения: ' . $image->get_error_message());
        } else {
            // Устанавливаем миниатюру
            $res2 = set_post_thumbnail($new_ID, $image);
            if (!$res2) {
                error_log('Не удалось установить миниатюру для поста ID: ' . $new_ID);
            }
        }
    }
}

Объяснение кода

  1. Проверка наличия видео: Убедитесь, что поле video-file существует и не пустое.
  2. Задержка: Мы используем sleep(10) для ожидания генерации миниатюры (это условие может быть изменено в зависимости от вашего специфического требования).
  3. Формирование URL миниатюры: Создаем URL для изображения миниатюры, добавляя суффикс к оригинальному URL видео.
  4. Загрузка изображения: Используем функцию media_sideload_image(), которая загружает изображение и возвращает его ID.
  5. Обработка ошибок: Если загрузка не удалась, выводим сообщение об ошибке в лог.
  6. Установка миниатюры: После успешной загрузки устанавливаем миниатюру для поста с заданным ID.

Заключение

Следуя приведённым шагам, вы сможете автоматически устанавливать миниатюры для постов, основываясь на видео, загруженном пользователями. Этот подход не только улучшает качество контента вашего сайта, но и повышает его визуальную привлекательность.

Если у вас возникли дополнительные вопросы по данной реализации или вы нуждаетесь в дальнейшей помощи, не стесняйтесь обратиться на специализированные платформы или к профессионалам.

Оцените материал
Добавить комментарий

Капча загружается...