Функция wp_write_post()
в WordPress позволяет создавать и обновлять записи программно, минуя стандартные редакторы WordPress. Это полезно для автоматизации создания контента, интеграции с внешними системами и других сценариев, где необходимо вставить или обновить запись напрямую в базе данных.
wp_write_post(): int|WP_Error
Функция wp_write_post()
принимает массив параметров, который задает содержание и атрибуты записи, такие как заголовок, статус, автор и другие. На выходе функция возвращает ID созданной записи или объект ошибки WP_Error
, если что-то пошло не так.
Параметры
$postarr
(массив) — Массив данных о записи, содержащий такие параметры, какpost_title
,post_content
,post_status
и другие.wp_error
(логическое значение, необязательный) — Указывает, возвращать ли объектWP_Error
в случае ошибки. По умолчанию —false
.
Функция возвращает:
- ID записи — если создание или обновление прошло успешно.
- WP_Error — если возникла ошибка.
Базовый Пример Создания Новой Записи
В этом примере создается новая запись с заголовком и контентом, а также указывается автор и статус публикации:
$post_data = array(
'post_title' => 'Заголовок моего поста',
'post_content' => 'Это содержимое моего поста.',
'post_status' => 'publish',
'post_author' => 2,
);
$post_id = wp_write_post( $post_data );
if ( ! is_wp_error( $post_id ) ) {
echo 'Запись создана с ID: ' . $post_id;
} else {
echo 'Ошибка создания записи';
}
Здесь мы создаем ассоциативный массив $post_data
с заголовком, контентом, статусом и автором. Функция wp_write_post()
возвращает ID новой записи или ошибку.
Пример с Обновлением Существующей Записи
Для обновления записи укажите её ID в массиве данных:
$post_data = array(
'ID' => 15,
'post_title' => 'Обновленный заголовок',
'post_content' => 'Это обновленное содержимое поста.',
);
$post_id = wp_write_post( $post_data );
if ( ! is_wp_error( $post_id ) ) {
echo 'Запись обновлена с ID: ' . $post_id;
} else {
echo 'Ошибка обновления записи';
}
Этот пример обновляет заголовок и содержание записи с ID 15. Если обновление успешно, возвращается ID записи.
Создание Пользовательской Записи с Дополнительными Параметрами
wp_write_post()
поддерживает и другие параметры, такие как тип записи (post_type
), что позволяет создавать записи любого типа, включая пользовательские:
$post_data = array(
'post_title' => 'Мой пост для галереи',
'post_content' => 'Содержимое для галереи.',
'post_status' => 'draft',
'post_author' => 3,
'post_type' => 'gallery',
);
$post_id = wp_write_post( $post_data );
if ( ! is_wp_error( $post_id ) ) {
echo 'Запись в галерее создана с ID: ' . $post_id;
} else {
echo 'Ошибка создания записи для галереи';
}
В этом случае мы создаем запись типа gallery
со статусом черновика.
Обработка Ошибок
При создании или обновлении записи полезно проверять наличие ошибок. В следующем примере мы используем try-catch
, чтобы лучше управлять ошибками:
function create_or_update_post( $post_data ) {
$post_id = wp_write_post( $post_data );
if ( is_wp_error( $post_id ) ) {
throw new Exception( 'Ошибка создания или обновления записи: ' . $post_id->get_error_message() );
}
return $post_id;
}
try {
$post_id = create_or_update_post(array(
'post_title' => 'Запись с обработкой ошибок',
'post_content' => 'Содержимое записи с обработкой ошибок',
'post_status' => 'publish',
));
echo 'Запись успешно создана с ID: ' . $post_id;
} catch ( Exception $e ) {
echo 'Произошла ошибка: ' . $e->getMessage();
}
Здесь функция выбрасывает исключение, если запись не удается создать или обновить, что позволяет точнее управлять ошибками.
Полезные Советы
- Устанавливайте
post_status
: Убедитесь, что статус записи (draft
,publish
и т.д.) установлен корректно перед публикацией. - Указывайте
post_author
: Задайте ID пользователя, чтобы указать, кто является автором записи. - Используйте
post_type
: Если работаете с настраиваемыми типами записей, не забывайте указывать тип записи.
Заключение
Функция wp_write_post()
в WordPress — это мощный инструмент для программного создания и обновления записей. Она позволяет автоматизировать создание контента и гибко управлять процессом, минуя интерфейс редактора.