- Описание функции
- Примеры использования
- Создание нового поста
- Обновление существующего поста
- Установка даты и времени поста
- Добавление контента в пост
- Установка статуса поста
- Установка типа поста
- Управление комментариями и пингами
- Установка пароля для доступа к посту
- Установка имени поста
- Установка родительского поста
- Установка порядка отображения поста
- Установка MIME-типа поста
- Установка глобального уникального идентификатора поста
- Импорт поста с указанным ID
- Установка категорий поста
- Установка тегов поста
- Установка таксономий поста
- Установка метаданных поста
- Установка шаблона страницы
- Вопросы и ответы
- Как создать новый пост с помощью функции wp_insert_post()?
- Как обновить существующий пост с помощью функции wp_insert_post()?
- Как указать автора поста при использовании функции wp_insert_post()?
- Как указать дату и время поста при использовании функции wp_insert_post()?
- Как указать категории и теги поста при использовании функции wp_insert_post()?
- Как указать статус и тип поста при использовании функции wp_insert_post()?
- Как указать родительский пост при использовании функции wp_insert_post()?
- Как добавить пользовательские мета-данные к посту при использовании функции wp_insert_post()?
- Как указать шаблон страницы для поста при использовании функции wp_insert_post()?
- Связанные элементы
Описание функции
Функция wp_insert_post() используется для вставки или обновления записи в WordPress.
Она принимает массив параметров, содержащий информацию о записи, и возвращает идентификатор созданной или обновленной записи.
Функция выполняет несколько важных задач, таких как создание новой записи, обновление существующей записи, установка автора, даты и времени, заголовка, содержимого, статуса и других свойств записи.
Использование
wp_insert_post( array $postarr, bool $wp_error = false, bool $fire_after_hooks = true ) : int|WP_Error Функция wp_insert_post() принимает три параметра:
$postarr(обязательный) — массив элементов, составляющих запись для обновления или вставки.$wp_error(необязательный) — определяет, должна ли функция возвращать объектWP_Errorв случае ошибки. По умолчанию установлено значениеfalse.$fire_after_hooks(необязательный) — определяет, должны ли срабатывать хуки после вставки записи. По умолчанию установлено значениеtrue.
$postarr(обязательный) — массив элементов, составляющих запись для обновления или вставки.ID(int) — идентификатор записи. Если не равен 0, то будет выполнено обновление записи с указанным идентификатором. По умолчанию 0.post_author(int) — идентификатор пользователя, добавившего запись. По умолчанию — текущий пользователь.post_date(string) — дата записи. По умолчанию — текущее время.post_date_gmt(string) — дата записи в часовом поясе GMT. По умолчанию — значениеpost_date.post_content(string) — содержимое записи. По умолчанию пусто.post_content_filtered(string) — отфильтрованное содержимое записи. По умолчанию пусто.post_title(string) — заголовок записи. По умолчанию пусто.post_excerpt(string) — отрывок записи. По умолчанию пусто.post_status(string) — статус записи. По умолчанию ‘draft’.post_type(string) — тип записи. По умолчанию ‘post’.comment_status(string) — разрешение комментирования записи. Принимает значения ‘open’ или ‘closed’. По умолчанию — значение опции ‘default_comment_status’.ping_status(string) — разрешение пингов на запись. Принимает значения ‘open’ или ‘closed’. По умолчанию — значение опции ‘default_ping_status’.post_password(string) — пароль для доступа к записи. По умолчанию пусто.post_name(string) — имя записи (slug). По умолчанию — санитизированный заголовок записи при создании новой записи.to_ping(string) — список URL-адресов для пингования, разделенных пробелом или символом новой строки. По умолчанию пусто.pinged(string) — список URL-адресов, на которые были отправлены пинги, разделенных пробелом или символом новой строки. По умолчанию пусто.post_parent(int) — идентификатор родительской записи, если есть. По умолчанию 0.menu_order(int) — порядок отображения записи. По умолчанию 0.post_mime_type(string) — MIME-тип записи. По умолчанию пусто.guid(string) — глобально уникальный идентификатор записи. По умолчанию пусто.import_id(int) — идентификатор записи, используемый при вставке новой записи. Если указан, не должен совпадать с существующим идентификатором записи. По умолчанию 0.post_category(int[]) — массив идентификаторов категорий. По умолчанию — значение опции ‘default_category’.tags_input(array) — массив тегов по имени, слагу или идентификатору. По умолчанию пусто.tax_input(array) — массив терминов таксономии, сгруппированных по названию таксономии. Если таксономия иерархическая, список терминов должен быть массивом идентификаторов или строкой с идентификаторами, разделенными запятыми. Если таксономия не является иерархической, список терминов может быть массивом, содержащим имена или слаги терминов, или строкой с именами или слагами, разделенными запятыми. По умолчанию пусто.meta_input(array) — массив значений метаполей записи, сгруппированных по ключу метаполя. По умолчанию пусто.page_template(string) — шаблон страницы для использования.$wp_error(bool) — возвращать ли объектWP_Errorпри ошибке. По умолчаниюfalse.$fire_after_hooks(bool) — вызывать ли хуки после вставки записи. По умолчаниюtrue.
Функция возвращает идентификатор созданной или обновленной записи в случае успеха. В случае ошибки возвращает значение 0 или объект WP_Error.
<?php
// Создание новой записи
$postarr = array(
'post_title' => 'Новая запись',
'post_content' => 'Содержимое новой записи',
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(2, 3),
'tags_input' => array('тег1', 'тег2')
);
$post_id = wp_insert_post( $postarr );
if ( is_wp_error( $post_id ) ) {
$error_message = $post_id->get_error_message();
echo "Произошла ошибка при создании записи: " . $error_message;
} else {
echo "Запись успешно создана с идентификатором: " . $post_id;
}
?> В этом примере мы создаем новую запись с заголовком «Новая запись», содержимым «Содержимое новой записи», статусом «publish», автором с идентификатором 1, категориями с идентификаторами 2 и 3, и тегами «тег1» и «тег2».
Если создание записи прошло успешно, мы выводим сообщение с идентификатором созданной записи. В противном случае, если произошла ошибка, мы выводим сообщение об ошибке.
Примеры использования
Создание нового поста
// Создание нового поста
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'post_status' => 'publish',
'post_type' => 'post'
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Обновление существующего поста
// Обновление существующего поста
$postarr = array(
'ID' => 123, // ID поста, который нужно обновить
'post_title' => 'Новый заголовок поста',
'post_content' => 'Новое содержимое поста'
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно обновлен. ID поста: ' . $post_id;
} else {
echo 'Ошибка при обновлении поста: ' . $post_id->get_error_message();
}
Установка даты и времени поста
// Установка даты и времени поста
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'post_date' => '2022-01-01 12:00:00',
'post_date_gmt' => '2022-01-01 09:00:00'
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Добавление контента в пост
// Добавление контента в пост
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'post_excerpt' => 'Анонс поста'
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Установка статуса поста
// Установка статуса поста
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'post_status' => 'draft' // Черновик
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Установка типа поста
// Установка типа поста
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'post_type' => 'page' // Страница
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Управление комментариями и пингами
// Управление комментариями и пингами
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'comment_status' => 'closed', // Закрыть комментарии
'ping_status' => 'closed' // Закрыть пинги
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Установка пароля для доступа к посту
// Установка пароля для доступа к посту
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'post_password' => 'mypassword' // Пароль для доступа к посту
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Установка имени поста
// Установка имени поста
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'post_name' => 'my-post' // Имя поста в URL
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Установка родительского поста
// Установка родительского поста
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'post_parent' => 123 // ID родительского поста
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Установка порядка отображения поста
// Установка порядка отображения поста
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'menu_order' => 5 // Порядок отображения поста в меню
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Установка MIME-типа поста
// Установка MIME-типа поста
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'post_mime_type' => 'image/jpeg' // MIME-тип поста
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Установка глобального уникального идентификатора поста
// Установка глобального уникального идентификатора поста
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'guid' => 'http://example.com/my-post' // Глобальный уникальный идентификатор поста
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Импорт поста с указанным ID
// Импорт поста с указанным ID
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'import_id' => 123 // ID поста для импорта
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно импортирован. ID поста: ' . $post_id;
} else {
echo 'Ошибка при импорте поста: ' . $post_id->get_error_message();
}
Установка категорий поста
// Установка категорий поста
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'post_category' => array(1, 2, 3) // Массив ID категорий поста
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан и добавлен в категории. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Установка тегов поста
// Установка тегов поста
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'tags_input' => array('тег1', 'тег2', 'тег3') // Массив тегов поста
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан и добавлен теги. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Установка таксономий поста
// Установка таксономий поста
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'tax_input' => array(
'taxonomy1' => array('term1', 'term2'), // Таксономия 1
'taxonomy2' => array('term3', 'term4') // Таксономия 2
)
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан и добавлен в таксономии. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Установка метаданных поста
// Установка метаданных поста
$postarr = array(
'post_title' => 'Заголовок поста',
'post_content' => 'Содержимое поста',
'meta_input' => array(
'meta_key1' => 'meta_value1', // Мета-ключ 1
'meta_key2' => 'meta_value2' // Мета-ключ 2
)
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан и добавлен метаданные. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
}
Установка шаблона страницы
// Установка шаблона страницы
$postarr = array(
'post_title' => 'Заголовок страницы',
'post_content' => 'Содержимое страницы',
'post_type' => 'page',
'page_template' => 'template-custom.php' // Шаблон страницы
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Страница успешно создана. ID страницы: ' . $post_id;
} else {
echo 'Ошибка при создании страницы: ' . $post_id->get_error_message();
}
Вопросы и ответы
Как создать новый пост с помощью функции wp_insert_post()?
Для создания нового поста с помощью функции wp_insert_post() необходимо передать массив с данными поста в качестве аргумента. В этом массиве можно указать различные параметры, такие как заголовок, содержимое, автор и т.д. Если ID поста равен 0, то будет создан новый пост, если ID отличен от 0, то будет обновлен существующий пост.
$postarr = array(
'post_title' => 'Новый пост',
'post_content' => 'Содержимое нового поста',
'post_author' => 1,
'post_status' => 'publish',
'post_type' => 'post'
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
} Как обновить существующий пост с помощью функции wp_insert_post()?
Для обновления существующего поста с помощью функции wp_insert_post() необходимо указать ID поста, который нужно обновить, в массиве $postarr. Затем передать этот массив в функцию wp_insert_post().
$postarr = array(
'ID' => 123,
'post_title' => 'Обновленный пост',
'post_content' => 'Обновленное содержимое поста'
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно обновлен. ID поста: ' . $post_id;
} else {
echo 'Ошибка при обновлении поста: ' . $post_id->get_error_message();
} Как указать автора поста при использовании функции wp_insert_post()?
По умолчанию, если не указан параметр ‘post_author’ в массиве $postarr, автором поста будет текущий пользователь. Чтобы указать другого автора, необходимо в массиве $postarr указать ID пользователя в параметре ‘post_author’.
$postarr = array(
'post_title' => 'Новый пост',
'post_content' => 'Содержимое нового поста',
'post_author' => 2
);
$post_id = wp_insert_post($postarr);
if (!is_wp_error($post_id)) {
echo 'Пост успешно создан. ID поста: ' . $post_id;
} else {
echo 'Ошибка при создании поста: ' . $post_id->get_error_message();
} Как указать дату и время поста при использовании функции wp_insert_post()?
Для указания даты и времени поста при использовании функции wp_insert_post() необходимо передать соответствующие значения в массив $postarr.
Параметры, отвечающие за дату и время поста:
post_date— дата поста в формате ‘ГГГГ-ММ-ДД ЧЧ:ММ:СС’.post_date_gmt— дата поста в GMT-времени в формате ‘ГГГГ-ММ-ДД ЧЧ:ММ:СС’.
Пример кода:
$postarr = array(
'post_date' => '2022-01-01 12:00:00',
'post_date_gmt' => '2022-01-01 09:00:00',
);
$post_id = wp_insert_post( $postarr );
Как указать категории и теги поста при использовании функции wp_insert_post()?
Для указания категорий и тегов поста при использовании функции wp_insert_post() необходимо передать соответствующие значения в массив $postarr.
Параметры, отвечающие за категории и теги:
post_category— массив идентификаторов категорий.tags_input— массив названий, слагов или идентификаторов тегов.
Пример кода:
$postarr = array(
'post_category' => array( 1, 2, 3 ),
'tags_input' => array( 'tag1', 'tag2', 'tag3' ),
);
$post_id = wp_insert_post( $postarr );
Как указать статус и тип поста при использовании функции wp_insert_post()?
Для указания статуса и типа поста при использовании функции wp_insert_post() необходимо передать соответствующие значения в массив $postarr.
Параметры, отвечающие за статус и тип поста:
post_status— статус поста (например, ‘publish’, ‘draft’, ‘pending’, ‘private’).post_type— тип поста (например, ‘post’, ‘page’, ‘attachment’, ‘custom_post_type’).
Пример кода:
$postarr = array(
'post_status' => 'publish',
'post_type' => 'post',
);
$post_id = wp_insert_post( $postarr );
Как указать родительский пост при использовании функции wp_insert_post()?
Чтобы указать родительский пост при использовании функции wp_insert_post(), нужно в массиве $postarr указать значение ключа post_parent равным ID родительского поста.
$postarr = array(
'post_title' => 'Название поста',
'post_content' => 'Содержимое поста',
'post_parent' => 10 // ID родительского поста
);
wp_insert_post( $postarr );
Как добавить пользовательские мета-данные к посту при использовании функции wp_insert_post()?
Для добавления пользовательских мета-данных к посту при использовании функции wp_insert_post(), нужно в массиве $postarr указать значение ключа meta_input равным массиву мета-данных.
$postarr = array(
'post_title' => 'Название поста',
'post_content' => 'Содержимое поста',
'meta_input' => array(
'meta_key1' => 'Значение мета-данных 1',
'meta_key2' => 'Значение мета-данных 2'
)
);
wp_insert_post( $postarr );
Как указать шаблон страницы для поста при использовании функции wp_insert_post()?
Чтобы указать шаблон страницы для поста при использовании функции wp_insert_post(), нужно в массиве $postarr указать значение ключа page_template равным пути к файлу шаблона.
$postarr = array(
'post_title' => 'Название поста',
'post_content' => 'Содержимое поста',
'page_template' => 'путь/к/файлу/шаблона.php'
);
wp_insert_post( $postarr );
Функция
wp_insert_post()позволяет вставлять или обновлять посты в WordPress. Она принимает массив параметров, в котором можно указать различные свойства поста, такие как название, содержимое, родительский пост, пользовательские мета-данные и шаблон страницы. Функция возвращает ID созданного или обновленного поста в случае успеха, либо 0 или объект WP_Error в случае ошибки.
Связанные элементы
- Функция
wp_update_post(): Обновляет существующий пост. - Хук
wp_insert_post_empty_content: Вызывается, если содержимое поста пустое. - Хук
wp_insert_post_data: Вызывается перед сохранением данных поста. - Хук
wp_insert_post_parent: Вызывается перед сохранением родительского поста. - Хук
wp_insert_post: Вызывается после успешного сохранения поста. - Класс
WP_Post: Представляет пост в WordPress. - Класс
WP_Error: Представляет ошибку, которая может возникнуть при выполнении операции.