- Добавление записей в WordPress средствами PHP
- Создание записи в WordPress средствами PHP
- Добавление дополнительных полей для записи WordPress в PHP
- Добавление изображения для записи WordPress в PHP
- Загрузка изображения в WordPress из URL
- Добавление поста в wordpress средствами php
- Добавление основных полей поста вордпресса средствами php
- Добавление дополнительных полей в запись wordpress средствами php
- Добавление картинки в WordPress средствами php
Добавление записей в WordPress средствами PHP
Для решения некоторых задач иногда требуется возможность добавления новой записи в WordPress средствами PHP. Такая потребность может возникать с необходимостью автоматизации процесса добавления постов/товаров в каталог. В WordPress есть специальные функции, которые отвечают за создание записей. Использовать их естественно необходимо в пределах работы самого движка. Однако мы можем создавать собственные скрипты, и подключать в них уже API WordPress. Это может быть очень удобно даже когда необходимо реализовать ajax-обработчики. Давайте рассмотрим простой пример создание записи в WordPress.
Создание записи в WordPress средствами PHP
Для примера использования функции создания записи, в директории сайта создадим файл add-post.php. В самом начале файла необходимо инициализировать движок WordPress, чтобы нам стали доступны встроенные функции. Для этого следует подключить файлы wp-load.php и admin.php.
require_once( dirname(__FILE__) . '/wp-load.php' ); require_once( dirname(__FILE__) . '/wp-admin/includes/admin.php');
Далее для создания записи мы будет использовать встроенную функцию wp_insert_post() которой стоит передать массив с основными полями для записи.
$post_data = array( 'post_title' => 'Привет! Это новая запись!', 'post_content' => 'Основной контент записи', 'post_status' => 'publish', 'post_author' => 1, 'post_category' => array(1) );
В самом деле полей для создания записи может быть гораздо больше, для простоты примера мы указали базовые поля. Весь список полей вы сможете посмотреть в документации (ссылка указана выше).
- post_title – заголовок поста;
- post_content – содержимое записи;
- post_status – статус публикации, publish – запись опубликована;
- post_author – ID пользователя, от имени которого добавляется запись;
- post_category – ID рубрик, к которым привязана запись.
Далее массив с полями передаётся непосредственно функции, которая и создаст новую запись.
$post_id = wp_insert_post($post_data, true);
В качестве результата работы функции в переменную $post_id будет передан ID новой записи, либо объект с массивом ошибок. В целом весь пример будет выглядеть следующим образом:
require_once( dirname(__FILE__) . '/wp-load.php' ); require_once( dirname(__FILE__) . '/wp-admin/includes/admin.php'); $post_data = array( 'post_title' => 'Привет! Это новая запись!', 'post_content' => 'Основной контент записи', 'post_status' => 'publish', 'post_author' => 1, 'post_category' => array(1) ); $post_id = wp_insert_post($post_data, true); echo ''; print_r ( $post_id ); echo '';
Довольно часто в WordPress в записях используются дополнительные поля. Как их добавлять мы рассмотрим далее.
Добавление дополнительных полей для записи WordPress в PHP
После того как мы создали новую запись, мы получили значение в переменной $post_id. Это ID записи, теперь мы можем выполнить добавление/обновление дополнительных полей посредством встроенной функции update_post_meta(). Давайте для примера выставим дополнительному полю с кодом post_rating значение 10:
update_post_meta($post_id , 'post_rating', 10);Аналогичным образом мы можем выставлять значение дополнительного поля строкового типа. К примеру, у нас есть дополнительное поле meta_desc со строковым типом.
update_post_meta($post_id , 'meta_desc', 'Здесь описание для поля meta_desc');Как вы можете заметить — всё по аналогии, лишь передаются другие значения. Далее мы рассмотрим пример загрузки изображения для записи.
Добавление изображения для записи WordPress в PHP
Добавление изображения в WordPress можно разделить на два этапа. Первый этап – изображение следует загрузить медиа библиотеку, после чего мы получаем ID-записи файла в медиа библиотеке. Далее зная ID-файла, мы можем связать его с превью поста.
// загрузка файла в медиа-библиотеку $media_id = media_handle_sideload( $file_array, $post_id, $description);В качестве параметров функции передаются три переменные:
- $file_array – стандартный массив с полями файла, создаваемый при отправке файла на сервер ($_FILES);
- $post_id – ID записи поста;
- $description – описание для файла в медиа-библиотеке.
После этого, когда мы получаем значение $media_id, мы можем привязать превью к посту:
set_post_thumbnail($post_id, $media_id);
Обратите внимание, в примере не приводится весь процесс проверки файла на корректность и т.д. Поэтому этот момент вам следует учитывать самостоятельно. В целом загрузка файла будет выполняться таким образом:
// загружаем файл в медиабиблиотеку $media_id = media_handle_sideload( $file_array, $post_id, $description); // проверяем на наличие ошибок при добавлении в медиа-библиотеку if( is_wp_error($media_id) ) < @unlink($file_array['tmp_name']); echo $media_id->get_error_messages(); > // удаляем временный файл, т.к. уже добавлен в медиа-библиотеку @unlink( $file_array['tmp_name'] ); // устанавливаем изображение поста set_post_thumbnail($post_id, $media_id);
Загрузка изображения в WordPress из URL
Ещё один способ загружать изображение на сайт – посредством URL. Для этого в WordPress существует встроенная функция download_url(). Данная функция получает в качестве параметра URL-файла, который в результате будет загружен во временный каталог PHP. Для работы функции так же следует подключить следующий файл:
require_once( dirname(__FILE__) . 'wp-admin/includes/file.php');
Далее следует загрузить физически файл на сервер, и сформировать массив для добавления его в медиа-библиотеку:
// URL к файлу изображения $url = 'https://href.kz/img/test_file.png'; // описание для файла $description = "Превью для новой записи"; $file_array = array(); // массив файла // загружаем файл на сервер $tmp = download_url($url); // получаем имя файла preg_match('/[^\?]+\.(jpg|jpe|jpeg|gif|png)/i', $url, $matches ); $file_array['name'] = basename($matches[0]); $file_array['tmp_name'] = $tmp;
После того как в переменной $file_array мы имеем массив с полями файла, далее добавляем файл как уже описывалось выше:
// загружаем файл в медиабиблиотеку $media_id = media_handle_sideload( $file_array, $post_id, $description); // проверяем на наличие ошибок при добавлении в медиа-библиотеку if( is_wp_error($media_id) ) < @unlink($file_array['tmp_name']); echo $media_id->get_error_messages(); > // удаляем временный файл, т.к. уже добавлен в медиа-библиотеку @unlink( $file_array['tmp_name'] ); // устанавливаем изображение поста set_post_thumbnail($post_id, $media_id);
VK FB TW Whatsapp Telegram Email
Добавление поста в wordpress средствами php
Эта статья будет полезна тем, кто захочет написать собственный парсер с автопостингом для WordPress. В данном материале будет рассмотрен механизм создания и публикации поста средствами php. Скрипт создаётся с целью постинга без захода в админку и без ручной работы по заполнению полей публикуемого поста поста.
Создаём в корне сайта файл upload-post.php, при обращении к нему через браузер будет добавляться пост. Убедитесь, что он сохранён в кодировке utf-8, иначе скрипт будет работать некорректно.
Добавление основных полей поста вордпресса средствами php
Подключаем файл инициализации движка WordPress wp-load.php, используем функцию вордпресса wp_insert_post() для добавления поста. Вот что у меня получилось на начальном этапе:
'Новый тестовый пост', 'post_content' => 'Контент тестового поста', 'post_status' => 'publish', 'post_author' => 1, 'post_category' => array(1) ); // Вставляем запись в базу данных $post_id = wp_insert_post($post_data, true); print_r($post_id); // Выведет id-ник поста, либо объект с массивом ошибок
Мой массив $post_data имеет минимальный набор значений. Для того, чтобы узнать о всех возможных параметрах, смотрите документацию по функции wp_insert_post().
Откройте браузер и зайдите по адресу «http://ваш_домен/upload-post.php». Если скрипт отработал успешно — появиться цифра. Перейдите на главную страницу блога — новая запись должна появиться.
Добавление дополнительных полей в запись wordpress средствами php
Если у Вас навороченный сайт на wordpress, вряд ли Вам хватает основных полей записи блога. В ход идут Custom Fields — произвольные поля. Давайте разберёмся, как их добавлять средствами php. Предположим, что все дополнительные поля уже настроены через админку wodpress, и нам просто нужно вставить значения для этих полей в добавляемом посту.
Для этой цели мы используем метод update_post_meta(). Добавляем к существующему коду функцию, изменяющую значение произвольного поля в добавленном посте:
'Новый тестовый пост с дополнительным полем', 'post_content' => 'Контент тестового поста с дополнительным полем', 'post_status' => 'publish', 'post_author' => 1, 'post_category' => [1] ); // Вставляем запись в базу данных $post_id = wp_insert_post($post_data, true); // Задаём значение для дополнительного поля: // В одном из моих блогов есть дополнительное поле rating (числовое). // Его мы и зададим. Для примера, выставим значение 80 update_post_meta($post_id , 'rating', 80); // Второе поле - строковое - postscriptum update_post_meta($post_id , 'postscriptum', 'Спасибо за внимание. Подписывайтесь на мой блог');
Добавление картинки в WordPress средствами php
Допустим нам нужно залить и прикрепить обложку к записи wordpress. Для этого нам нужно: 1) Скачать картинку по ссылке и сохранить её в папку uploads. 2) Добавить загруженный файл в медиатеку WordPress. 3) Назначить сохранённый в медиатеку элемент в качестве обложки поста. Для этого нам понадобятся функции download_url() и media_handle_sideload(). Добавляем в auto-poster.php следующий код:
// . добавляем в уже созданный upload-post.php код: // Для примера возьмём картинку с моего же блога, которая была залита вне структуры wordpress $url = 'http://sergeivl.ru/public/img/svlJForm.png'; // Прикрепим к ранее сохранённому посту //$post_id = 3061; $description = "Картинка для обложки"; // Установим данные файла $file_array = array(); $tmp = download_url($url); // Получаем имя файла preg_match('/[^\?]+\.(jpg|jpe|jpeg|gif|png)/i', $url, $matches ); $file_array['name'] = basename($matches[0]); $file_array['tmp_name'] = $tmp; // загружаем файл $media_id = media_handle_sideload( $file_array, $post_id, $description); // Проверяем на наличие ошибок if( is_wp_error($media_id) ) < @unlink($file_array['tmp_name']); echo $media_id->get_error_messages(); > // Удаляем временный файл @unlink( $file_array['tmp_name'] ); // Файл сохранён и добавлен в медиатеку WP. Теперь назначаем его в качестве облож set_post_thumbnail($post_id, $media_id);
Запускам, проверяем, радуемся. Принцип я показал. А дальше можете оформлять в виде плагина, писать парсеры с автоматическим добавлением записей в wordpress. Исходник скрипта в моём репозитории на GitHub.