Функция wp_insert_post вставляет запись (заданного типа) в таблицу wp_posts базы данных WordPress.
<?php wp_insert_post( $post, $wp_error ); ?>
$post (array) (обязательный параметр) - массив параметров записи.
$wp_error (bool) (необязательный параметр) - включает возврат объекта WP_Error в случае ошибки, , по умолчанию false
Функция возвращает ID созданной записи (post ID), а в случае ошибки возвращает 0 или объект WP_Error, если $wp_error равно TRUE.
В массиве $post должны быть заданы
- заголовок записи $post['post_title'] и
- содержимое записи $post['post_content']
элемент массива $post['ID'], должен быть пустым или не задан.
Если задан элемент массива $post['ID'], функция обновляет существующую запись с заданным ID
Остальные элементы этого массив задавать необязательно. По умолчанию используются значения:
$defaults = array(
'post_status' => 'draft', // черновик
'post_type' => 'post', // тип - запись блога (пост)
'post_author' => $user_ID, // ID автора
'ping_status' => get_option('default_ping_status'),
'post_parent' => 0, // родитель
'menu_order' => 0, // порядок в меню
'to_ping' => '',
'pinged' => '',
'post_password' => '', // без пароля
'guid' => '',
'post_content_filtered' => '',
'post_excerpt' => '', // анонс
'import_id' => 0
);
Более подробный список:
$post = array( 'ID' => [ <post id> ] // задайте, чтобы обновить существующую запись 'post_content' => [ <string> ] // текст записи 'post_name' => [ <string> ] // slug - часть URL записи 'post_title' => [ <string> ] // заголовок 'post_status' => [ 'draft' | 'publish' | 'pending'| 'future' | 'private' | зарегистрированный статус ] // статус, по умолчанию 'draft 'post_type' => [ 'post' | 'page' | 'link' | 'nav_menu_item' | custom post type ] // тип записи, по умолчанию 'post' 'post_author' => [ <user ID> ] // ID автора, по умолчанию ID текущего пользователя 'ping_status' => [ 'closed' | 'open' ] // разрешение оповещений 'post_parent' => [ <post ID> ] // задает ID родителя записи, по умолчанию 0. 'menu_order' => [ <order> ] // для page задает порядок в меню, по умолчанию 0. 'to_ping' => // список (через пробел или с новой строки) URL-адресов для оповещения. 'pinged' => // аналогичный список URL-адресов, которые были оповещены 'post_password' => [ <string> ] // пароль 'guid' => // обычно задает WordPress 'post_content_filtered' => // обычно задает WordPress 'post_excerpt' => [ <string> ] // анонс записи 'post_date' => [ Y-m-d H:i:s ] // время создания 'post_date_gmt' => [ Y-m-d H:i:s ] // время создания в GMT (по Гринвичу) 'comment_status' => [ 'closed' | 'open' ] // разрешение комментариев для записи 'post_category' => [ array(<category id>, ...) ] // рубрика, по умолчанию не задана 'tags_input' => [ '<tag>, <tag>, ...' | array ] // метки 'tax_input' => [ array( <taxonomy> => <array | string>, <taxonomy_other> => <array | string> ) ] // для custom taxonomies 'page_template' => [ ] // имя файла шаблона (например, template.php), игнорируется, если тип записи не Page );
*** Задать шаблон для записи (не типа Page) можно как значение поля $meta_key== _wp_page_template в функции update_post_meta
<?php update_post_meta($post_id, $meta_key, $meta_value, $prev_value); ?>
Примеры добавления записи с помощью функции wp_insert_post
<?php
// Подключение wordpress (нужно, если это отдельный php-файл вне wordpress-сайта):
require('wp-blog-header.php');
// Создание объекта записи (post)
$my_post = array();
$my_post['post_title'] = "заголовок";
$my_post['post_content'] = "Содержимое записи";
// Добавление записи в базу данных
wp_insert_post( $my_post );
?>
Безопасность
В функции wp_insert_post() вызывается функция sanitize_post(), которая обеспечивает валидацию данных перед сохранением в базу данных. Но в post_title и других полях могут оказаться теги (HTML, JavaScript и PHP), и их нужно удалить с помощью функции wp_strip_all_tags().
$my_post = array( 'post_title' => wp_strip_all_tags( $_POST['post_title'] ), 'post_content' => $_POST['post_content'], 'post_status' => 'publish', 'post_author' => 1, 'post_category' => array( 8,39 ) ); $post_id = wp_insert_post( $my_post ); /*$post_id можно использовать в функции add_post_meta или update_post_meta */
Дополнительно: в разделе "Функции WordPress" также:
- URL и другая информация о блоге
- Функции, подключающие шаблоны
- Циклы WordPress
- wp_list_categories
- Вход в систему
- wp_list_pages - список ссылок на страницы
- Функции даты и времени в WordPress
- wp_link_pages - ссылки на страницы статьи с nextpage
- Шорткод [gallery]
- Функции для работы с метками
- Функции action, filter, plugin и локализация
- Произвольные поля (custom fields)
- Функции для работы с типами данных (записей)
- Административные меню
- Функции для работы с пользователями и ролями пользователей