Un imprescindible del desarrollo a medida de plugins. wp_insert_post()

💥 Crea y guarda un nuevo post en la base de datos de WordPress. Puede ser de cualquier tipo, como una entrada de blog, una página, un tipo de contenido personalizado, etc.

💥 Acepta un array de parámetros que definen las propiedades del post como: post_title (título del post), post_content (contenido del post), post_status (estado del post), post_type (tipo de post), post_author (autor del post), y muchos otros.

💥 wp_insert_post() valida los datos proporcionados para asegurarse de que sean válidos y seguros. Esto incluye la limpieza de los datos para evitar ataques de inyección de SQL y otras vulnerabilidades de seguridad.

💥 Devuelve el ID del post recién insertado si la inserción se realizó con éxito.

💥 Si ocurre algún error durante el proceso de inserción, la función devuelve 0 o WP_Error dependiendo de la configuración. Esto permite gestionar los errores de forma adecuada.

💥 Dispara una serie de Hooks de acción durante el proceso de inserción del post. Esto permite ejecutar código personalizado antes o después de que se inserte el post en la base de datos.

💥 Utilízalo en desarrollo de Intranets o área de usuarios, añadir productos, nuevos eventos, sistema de soporte, formulario para añadir contenido a una API, Noticias, CRM, blog, directorios, testimonios, ofertas de trabajo… Cualquier contenido que pueda introducir el usuario.

// Creamos un nuevo post
$new_post = array(
    'post_title'    => 'Título del nuevo post',
    'post_content'  => 'Contenido del nuevo post',
    'post_status'   => 'publish', // Estado del post (publicado)
    'post_author'   => 1, // ID del autor del post (1 es el ID del usuario administrador por defecto)
    'post_type'     => 'post' // Tipo de post (puede ser 'post', 'page', u otro tipo de post personalizado)
);

// Insertamos el nuevo post en la base de datos
$new_post_id = wp_insert_post($new_post);

// Comprobamos si se insertó correctamente
if ($new_post_id) {
    echo "¡Enhorabuena! Tu post se ha publicado correctamente con ID: " . $new_post_id;
} else {
    echo "Error al insertar el nuevo post.";
}

https://developer.wordpress.org/reference/functions/wp_insert_post