wp_insert_post()

Вставляет или обновляет запись
Функция WordPress
INT 1.0.0
WordPress Icon
Содержание
  1. Описание функции
  2. Примеры использования
  3. Создание нового поста
  4. Обновление существующего поста
  5. Установка даты и времени поста
  6. Добавление контента в пост
  7. Установка статуса поста
  8. Установка типа поста
  9. Управление комментариями и пингами
  10. Установка пароля для доступа к посту
  11. Установка имени поста
  12. Установка родительского поста
  13. Установка порядка отображения поста
  14. Установка MIME-типа поста
  15. Установка глобального уникального идентификатора поста
  16. Импорт поста с указанным ID
  17. Установка категорий поста
  18. Установка тегов поста
  19. Установка таксономий поста
  20. Установка метаданных поста
  21. Установка шаблона страницы
  22. Вопросы и ответы
  23. Как создать новый пост с помощью функции wp_insert_post()?
  24. Как обновить существующий пост с помощью функции wp_insert_post()?
  25. Как указать автора поста при использовании функции wp_insert_post()?
  26. Как указать дату и время поста при использовании функции wp_insert_post()?
  27. Как указать категории и теги поста при использовании функции wp_insert_post()?
  28. Как указать статус и тип поста при использовании функции wp_insert_post()?
  29. Как указать родительский пост при использовании функции wp_insert_post()?
  30. Как добавить пользовательские мета-данные к посту при использовании функции wp_insert_post()?
  31. Как указать шаблон страницы для поста при использовании функции wp_insert_post()?
  32. Связанные элементы

Описание функции

Функция 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: Представляет ошибку, которая может возникнуть при выполнении операции.
Обсуждение