Вставка картинок в тело поста, используя WordPress REST API

promusik

Client
Регистрация
05.02.2021
Сообщения
57
Благодарностей
16
Баллы
8
Всех приветствую! Есть монстры WordPress`а? В общем использую api, но не пойму как вставить изображение именно в тело поста используя POST-запрос с json. Т.е. там вроде обычный HTML съедается, но вот как ему объяснить что нужно вставить такую-то картинку прямо в тело сообщения используя ID или URL изображения? Должны же быть решения? Или я слишком многого хочу?
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 434
Баллы
113

lavachik

Client
Регистрация
18.09.2020
Сообщения
52
Благодарностей
19
Баллы
8
Всех приветствую! Есть монстры WordPress`а? В общем использую api, но не пойму как вставить изображение именно в тело поста используя POST-запрос с json. Т.е. там вроде обычный HTML съедается, но вот как ему объяснить что нужно вставить такую-то картинку прямо в тело сообщения используя ID или URL изображения? Должны же быть решения? Или я слишком многого хочу?

Ну я картинку вообще гружу на сервер в WP а уже потом вставляю на сайт


Я отправляю с ZP потому отправляю в виде base64

Сохраняем фото и получаем attach_id:
/** Загружаем фото **/


defined( 'WP_USE_THEMES' ) || define( 'WP_USE_THEMES', false );
require_once('wp-load.php');

require_once ABSPATH . '/wp-admin/includes/taxonomy.php';



                $newFileName = time() . ".jpg";
                    $base64IMG_image = $_POST['image'];

                 $ifp = fopen($newFileName, "wb");
                    fwrite($ifp, base64_decode($base64IMG_image));
                    fclose($ifp);


            $image_url = $newFileName; // Имя фото

            $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 );  // ID ЗАПИСИ
            require_once( ABSPATH . 'wp-admin/includes/image.php' );
            $attach_data = wp_generate_attachment_metadata( $attach_id, $file );
            wp_update_attachment_metadata( $attach_id, $attach_data );


             $link = $upload_dir['baseurl'] .'/'.$attach_data['file'];

            unlink($newFileName); // Удалить файл

            die(json_encode(['status'=>'ok','output'=>$link, 'attach_id'=>$attach_id]));


Пример как публикую (Готовый HTML):
<figure class="wp-block-image size-large"><a href="http://Твой_сайт.ком/wp-content/uploads/2023/09/1695208460.jpg"><img src="http://твой_сайт.ком/wp-content/uploads/2023/09/1695208460.jpg" alt=" SinB " class="wp-image-14481"/></a></figure>

Если что не понятно, пиши, розберемся, я тоже долго розбирался с ним.
 
  • Спасибо
Реакции: eee и Grindaize

Denchen

Client
Регистрация
23.06.2020
Сообщения
22
Благодарностей
3
Баллы
3
Если вручную вставлять, картинка с урла подтягивается или просто урл текстом?
 

Denchen

Client
Регистрация
23.06.2020
Сообщения
22
Благодарностей
3
Баллы
3
Поковырял гугл, попробовал на вордпресс ком должна вот так вставляться:

"content": Текст "<img src='" + image_url + "' alt='описание'>" Текст,
 

Grindaize

Новичок
Регистрация
17.03.2023
Сообщения
14
Благодарностей
4
Баллы
3
Пример как публикую (Готовый HTML):
<figure class="wp-block-image size-large"><a href="http://Твой_сайт.ком/wp-content/uploads/2023/09/1695208460.jpg"><img src="http://твой_сайт.ком/wp-content/uploads/2023/09/1695208460.jpg" alt=" SinB " class="wp-image-14481"/></a></figure>
[/QUOTE]
Можете объяснить почему мы дважды дублируем адрес картинки? и зачем нужен такой класс?
 

eee

Client
Регистрация
04.06.2018
Сообщения
134
Благодарностей
31
Баллы
28
Пример как публикую (Готовый HTML):
<figure class="wp-block-image size-large"><a href="http://Твой_сайт.ком/wp-content/uploads/2023/09/1695208460.jpg"><img src="http://твой_сайт.ком/wp-content/uploads/2023/09/1695208460.jpg" alt=" SinB " class="wp-image-14481"/></a></figure>
Можете объяснить почему мы дважды дублируем адрес картинки? и зачем нужен такой класс?
[/QUOTE]
Не бери в голову, просто делай так как делает wordpress. А вообще это связано с качеством выдаваемой картинки для различных разрешений экрана устройств. Wordpress создает нарезки этой картинки для разных разрешений экрана. Эту функцию лучше отключать в настройках wordpress. Ну и можно просто потестировать на своем wordpress как он вставляет картинки в посты и взять код оттуда.
 
  • Спасибо
Реакции: Grindaize

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)