Функция вставляет посты (записи, страницы, произвольные типы постов) в базу данных WordPress. В случае успеха возвращает ID поста, в случае неудачи либо 0 либо объект WP_Error ( в зависимости от значения второго параметра ).
Если же вам нужно сделать несколько записей, то просто запустите эту функцию в цикле PHP.
wp_insert_post( $postarr, $wp_error = false )
- $postarr
- (массив) содержит информацию о посту.
- ID
- ID поста, который нужно обновить. При создании нового поста этот параметр указывать не нужно.
- post_content
- Содержимое поста (контент).
- post_name
- Ярлык (если не указан, то берется из заголовка).
- post_title
- Собственно заголовок.
- post_status
- Статус поста.
Если установлено
future
(запланированная публикация в будущем), то время публикации post_date (этот параметр дан ниже) должно быть соответствующим.По умолчанию —
draft
, то есть, если вы не укажете этот параметр, то пост создастся как черновик. - post_type
- Тип поста. Например
post
— запись (по умолчанию),page
— страница. - post_author
- Автор поста, а точнее его ID (по умолчанию — текущий пользователь, который авторизован).
- ping_status
- Пингбэки и трэкбеки:
open
— разрешены,closed
— запрещены.
По умолчанию — значение
get_option('default_ping_status')
(находится в Настройки > Обсуждение, скриншот ниже). - post_parent
- ID родительского поста.
- menu_order
- Порядок в меню (применимо для страниц и не применимо для записей).
- to_ping
- Список URL сервисов обновления, разделенных пробелом, либо каждый URL — с новой строки (нужны для ускоренной индексации постов, подробнее про сервисы обновления в Настройки > Написание). Пример:
http://rpc.weblogs.com/RPC2 http://bing.com/webmaster/ping.aspx
- pinged
- Список URL сервисов обновления, на которые уже был отправлен запрос.
- post_password
- Пароль к посту.
- post_excerpt
- Поле «Цитата», анонс поста.
- post_date
- Когда пост был (или должен быть) опубликован
Y-m-d H:i:s
, по умолчанию текущая дата. - post_date_gmt
- в GMT.
- comment_status
- Разрешить
open
или запретитьclosed
комментирование этого поста. - post_category, tags_input, tag_input
- Для того, чтобы присвоить посту рубрики, метки или элементы какой-либо произвольной таксономии, используйте функцию wp_set_object_terms().
- page_template
- Название файла шаблона, например
template-portfolio.php
.Если тип поста — не страницы
page
, значение этого параметра будет проигнорировано.
- $wp_error
true
— возвращать объект WP_Error в случае неудачи (по умолчанию —false
).
- ID
- ID поста, который нужно обновить. При создании нового поста этот параметр указывать не нужно.
- post_content
- Содержимое поста (контент).
- post_name
- Ярлык (если не указан, то берется из заголовка).
- post_title
- Собственно заголовок.
- post_status
- Статус поста.
Если установлено
future
(запланированная публикация в будущем), то время публикации post_date (этот параметр дан ниже) должно быть соответствующим.По умолчанию —
draft
, то есть, если вы не укажете этот параметр, то пост создастся как черновик. - post_type
- Тип поста. Например
post
— запись (по умолчанию),page
— страница. - post_author
- Автор поста, а точнее его ID (по умолчанию — текущий пользователь, который авторизован).
- ping_status
- Пингбэки и трэкбеки:
open
— разрешены,closed
— запрещены.
По умолчанию — значение
get_option('default_ping_status')
(находится в Настройки > Обсуждение, скриншот ниже). - post_parent
- ID родительского поста.
- menu_order
- Порядок в меню (применимо для страниц и не применимо для записей).
- to_ping
- Список URL сервисов обновления, разделенных пробелом, либо каждый URL — с новой строки (нужны для ускоренной индексации постов, подробнее про сервисы обновления в Настройки > Написание). Пример:
http://rpc.weblogs.com/RPC2 http://bing.com/webmaster/ping.aspx
- pinged
- Список URL сервисов обновления, на которые уже был отправлен запрос.
- post_password
- Пароль к посту.
- post_excerpt
- Поле «Цитата», анонс поста.
- post_date
- Когда пост был (или должен быть) опубликован
Y-m-d H:i:s
, по умолчанию текущая дата. - post_date_gmt
- в GMT.
- comment_status
- Разрешить
open
или запретитьclosed
комментирование этого поста. - post_category, tags_input, tag_input
- Для того, чтобы присвоить посту рубрики, метки или элементы какой-либо произвольной таксономии, используйте функцию wp_set_object_terms().
- page_template
- Название файла шаблона, например
template-portfolio.php
.Если тип поста — не страницы
page
, значение этого параметра будет проигнорировано.
Если установлено future
(запланированная публикация в будущем), то время публикации post_date (этот параметр дан ниже) должно быть соответствующим.
По умолчанию — draft
, то есть, если вы не укажете этот параметр, то пост создастся как черновик.
По умолчанию — значение get_option('default_ping_status')
(находится в Настройки > Обсуждение, скриншот ниже).
http://rpc.weblogs.com/RPC2 http://bing.com/webmaster/ping.aspx
Если тип поста — не страницы page
, значение этого параметра будет проигнорировано.
Примеры
Создаем пост и присваиваем ему рубрики и метки
$my_postarr = array( 'post_title' => 'Новый пост', 'post_content' => 'Это мой новый пост.', // контент 'post_status' => 'publish' // опубликованный пост ); // добавляем пост и получаем его ID $my_post_id = wp_insert_post( $my_postarr ); // присваиваем рубрику к посту (ссылка на документацию wp_set_object_terms() дана чуть выше) wp_set_object_terms( $my_post_id, 5, 'category' ); // присваиваем метки wp_set_object_terms( $my_post_id, array(7, 8), 'post_tag' );
Как изменить заголовок поста через функцию?
Этим способом вы также сможете изменить и другие параметры поста, упомянутые в статье.
$updated_post_arr = array( 'ID' => 500, // допустим, ID поста, заголовок которого нужно изменить, равен 500 'post_title' => 'Новый заголовок' // заголовок ); // обновляем пост (все остальные его параметры останутся прежними) wp_insert_post( $updated_post_arr );