WordPress post php script

Добавление записей в 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 рубрик, к которым привязана запись.
Читайте также:  What is late binding in java

Далее массив с полями передаётся непосредственно функции, которая и создаст новую запись.

$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.

Источник

Оцените статью