wp_insert_post() или аналог для произвольного типа записи
Необходимо программно добавить записи произвольного типа. Не получается добавить используя стандартный метод
$id = wp_insert_post(array('post_title'=>'случайный', 'post_type'=>'custom_post'));
создает обычную запись вместо нужной.

Это можно сделать с помощью следующего кода:
Для добавления новой записи пользовательского типа
$post_id = wp_insert_post(array (
'post_type' => 'your_post_type',
'post_title' => $your_title,
'post_content' => $your_content,
'post_status' => 'publish',
'comment_status' => 'closed', // если нужно
'ping_status' => 'closed', // если нужно
));
После добавления записи функция вернет ID записи. Если вам нужно добавить мета-данные для этой записи, можно использовать следующий код:
if ($post_id) {
// добавляем мета-данные
add_post_meta($post_id, '_your_custom_1', $custom1);
add_post_meta($post_id, '_your_custom_2', $custom2);
add_post_meta($post_id, '_your_custom_3', $custom3);
}

Параметр 'meta_input' можно использовать в массиве 'wp_insert_post' для добавления мета-полей, вместо последующего использования 'add_post_meta'.

wp_insert_post() заполнит значения по умолчанию, но пользователь должен обязательно указать заголовок и содержимое, иначе запись в базу данных не будет выполнена.
$id = wp_insert_post(array(
'post_title'=>'random',
'post_type'=>'custom_post',
'post_content'=>'demo text'
));

Этот пример сработал для меня с использованием meta_input
$post_id = wp_insert_post(array (
'post_type' => 'your_post_type',
'post_title' => $your_title,
'post_content' => $your_content,
'post_status' => 'publish',
'comment_status' => 'closed',
'ping_status' => 'closed',
'meta_input' => array(
'_your_custom_1' => $custom_1,
'_your_custom_2' => $custom_2,
'_your_custom_3' => $custom_3,
),
));

У меня была такая же проблема. Я перепробовал все решения, предложенные на большинстве форумов. Но реально сработало решение, связанное с длиной post_type.
Длина post_type ограничена 20 символами. Так что если у вас похожая проблема и ничего больше не помогло, попробуйте это.
