Публикация напрямую через БД
Хочу автоматизировать публикацию постов через Zennoposter напрямую в Базу данных без использования браузера.
Но возникла сложность с картинками, а именно с созданием значения meta_key - _wp_attachment_metadata, значение там задается приблизительно в таком формате a:5:{s5:"width";i...} - я понимаю, что это что-то вроде массива со всеми размерами загруженной картинки, но не пойму логику индексов: i, s5, s4 и т.д В поиске не смог найти ничего путного по логике формирования значения. Вообщем прошу Вашего наставления
И еще одно, пока искал ответ на свой вопрос, натолкнулся на эту статью wp_generate_attachment_metadata(), скажите, я правильно понял если создать php файл, поместить туда упомянутый в этой статье код
// файл должен находиться в директории загрузок WP. $filename = '/path/to/uploads/2013/03/filname.jpg'; // ID поста, к которому прикрепим вложение. $parent_post_id = 37; // Проверим тип поста, который мы будем использовать в поле 'post_mime_type'. $filetype = wp_check_filetype( basename( $filename ), null ); // Получим путь до директории загрузок. $wp_upload_dir = wp_upload_dir(); // Подготовим массив с необходимыми данными для вложения. $attachment = array( 'guid' => $wp_upload_dir['url'] . '/' . basename( $filename ), 'post_mime_type' => $filetype['type'], 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ), 'post_content' => '', 'post_status' => 'inherit' ); // Вставляем запись в базу данных. $attach_id = wp_insert_attachment( $attachment, $filename, $parent_post_id ); // Подключим нужный файл, если он еще не подключен // wp_generate_attachment_metadata() зависит от этого файла. require_once( ABSPATH . 'wp-admin/includes/image.php' ); // Создадим метаданные для вложения и обновим запись в базе данных. $attach_data = wp_generate_attachment_metadata( $attach_id, $filename ); wp_update_attachment_metadata( $attach_id, $attach_data );
то мои поля в БД будут генерироваться автоматически? Или я ошибаюсь?! Спасибо
P.S уже после создания вопроса, на первый пункт сам нашел ответ - сериализованный массив! Извиняюсь, только-только начал изучать php Но второй вопрос остается открытым, как мне правильнее адаптировать вышеприведенный код под мои нужды?
Читай про https://wp-kama.ru/function/add_post_meta
Так же что бы картинка стала featured можно использовать set_post_thumbnail
https://wp-kama.ru/function/set_post_thumbnail
Пример кода в контексте
Альтернативный вариант сделать атачмет дочерним от поста:
Эксперементируй, и используй то что работает
Вот рабочий пример похожий на твой:
Благодарю за помощь, вечером буду все пробовать!
А какая функция создает для каждого зарегистрированного в wordpress размера, отдельную картинку (файл) от уже загруженной картинки?
Всё во всем разобрался!!!! Спасибо за помощь! Вопрос закрыт