Palych_tw
@Palych_tw
Типа веб-разработчик

Как сохранить изображение в библиотеку из CF7?

Всем привет. Пытаюсь через CF7 с фронта создать пост и прикрепит featured image.
Но media_handle_upload все время возвращает ошибку Specified file failed upload test.
Аналогичный код не через CF7, а просто через самописную форму отрабатывает и картинка заливается в библиотеку. Но уж очень не хочется самому писать валидацию, отправку письма и ajax отправку формы.

Вот код:

add_action('wpcf7_before_send_mail', 'create_review_post');

function create_review_post($form) {

    $submission = WPCF7_Submission::get_instance();

    if ( $submission ) {

        if (319 == $form->id()) {


            if (!function_exists('wp_generate_attachment_metadata')){
                require_once(ABSPATH . "wp-admin" . '/includes/image.php');
                require_once(ABSPATH . "wp-admin" . '/includes/file.php');
                require_once(ABSPATH . "wp-admin" . '/includes/media.php');
            }
            
            $posted_data = $submission->get_posted_data();

            $review = array(
                'post_title' => wp_strip_all_tags($posted_data['title']),
                'post_content' => $posted_data['content'],
                'post_excerpt' => '',
                'post_status' => 'pending',
                'post_author' => 1,
                'post_type'	=> 'review'
            );

            $new_review_id = wp_insert_post( $review );

            if($new_review_id > 0) {

                if ($_FILES) {
                    $attach_id = media_handle_upload('avatar', $new_review_id );
                    if ($attach_id > 0) {
                        //and if you want to set that image as Post  then use:
                        update_post_meta($new_review_id, '_thumbnail_id', $attach_id);
                    }
                }

                return true;
            }

            return false;
        }
    }

    return true;
}
  • Вопрос задан
  • 128 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы