Como Usar a Função wp_insert_post no WordPress para Inserir Posts Personalizados

Como Usar a Função wp_insert_post no WordPress para Inserir Posts Personalizados

A função wp_insert_post do WordPress permite que você insira posts personalizados no banco de dados do seu site usando código. Com essa ferramenta poderosa, você pode criar e gerenciar conteúdo dinâmico sem esforço, superando as limitações do processo padrão de criação de posts.

Se você precisa automatizar a geração de conteúdo, gerenciar tipos de posts personalizados ou atribuir metadados e taxonomias via código, então wp_insert_post é a solução que você procura.

Neste tutorial, vamos apresentar as vantagens de usar a função wp_insert_post e explorar os parâmetros dela. Trazemos também exemplos práticos para mostrar como usar essa função para criar, personalizar e gerenciar vários tipos de posts.

Por Que Usar a Função wp_insert_post

Criar e gerenciar posts manualmente pode ser demorado, principalmente se for um grande volume de conteúdo. Isso fica ainda mais evidente ao exportar seus posts do WordPress para um novo site.

Graças à função wp_insert_post, você pode otimizar o fluxo de trabalho de criação de posts e automatizar a geração de conteúdo com eficiência.  Essa função não apenas economiza tempo, mas também minimiza o risco de erros humanos durante a entrada de dados, garantindo que seu conteúdo seja preciso e consistente.

Além disso, o WordPress oferece suporte a vários tipos de post para diferentes finalidades, como posts de blog, páginas, produtos ou tipos de posts personalizados. A versatilidade do wp_insert_post permite adaptar sua estrutura de conteúdo para atender aos requisitos exclusivos do seu site.

Parâmetros para wp_insert_post

Assim como outras funções do WordPress, a exemplo da get_posts, a função wp_insert_post também tem vários parâmetros para facilitar a inserção de posts personalizados. Confira abaixo alguns dos principais parâmetros que você precisa conhecer:

  • ID – O ID do post para atualizar. Se fornecida, a função tentará editar o post com o ID especificado. O padrão é 0 (sem atualização).
  • post_author – O ID do autor do post. O padrão é o ID do usuário atual.
  • post_contentt — O conteúdo do post. O padrão é uma string vazia.
  • post_content_filtered – O conteúdo do post filtrado. O padrão é uma string vazia.
  • post_title – O título do post. O padrão é uma string vazia.
  • post_status – O status do post (como publicar, rascunho, privado). O status padrão do post é publicar.
  • post_type – O tipo de post (como post, página, tipo de post personalizado). O padrão é post.
  • post_date – A data do post. O padrão é a data e a hora atuais.
  • post_excerpt  – O resumo do post. O resumo padrão do post é uma string vazia.
  • post_name– O slug do post (versão amigável do URL do título). O padrão é o título do post limpo.
  • post_parent  – O ID do post ascendente (caso o post seja descendente outro post). O padrão do post ascendente é 0 (sem ascendente)
  • post_password – A senha para proteger o post (se protegido por senha). O padrão é uma string vazia.
  • post_category – Uma matriz de IDs de categoria para atribuir ao post. O padrão é uma matriz vazia.
  • tags_input – Uma matriz de tags para atribuir ao post. O padrão é uma matriz vazia.
  • tax_input  – Uma matriz de taxonomias e termos para atribuir ao post. O padrão é uma matriz vazia.
  • meta_input – Uma matriz de valores de meta post indexados pela chave de meta post. O padrão é uma matriz vazia.

A sintaxe básica da função wp_insert_post é a seguinte:

$post_id = wp_insert_post( $args, $wp_error );

$args é uma matriz (array) que contém os dados do post e seus parâmetros correspondentes, enquanto $wp_error é definido como true para retornar um objeto WP_Error em caso de falha. Quando executada, a função retorna o ID do post recém-inserido em caso de êxito ou um objeto de tratamento de erros em caso de falha.

Sugestão de Leitura

Para uma lista completa de todos os parâmetros disponíveis para função wp_insert_post, você pode consultar a página oficial de documentação do WordPress.

Como Usar a Função wp_insert_post no WordPress

O arquivo wp-includes/post.php está localizado no Gerenciador de arquivos

Nesta seção, veremos exemplos práticos de como usar a função wp_insert_post para inserir posts personalizados. Você pode adicionar seu código personalizado ao arquivo wp-includes/post.php para usar essa função. Nos planos WordPress da Hostinger, o arquivo pode ser acessado pelo Gerenciador de Arquivos.

Vamos explorar três cenários comuns para mostrar a versatilidade e o potencial dessa função:

Como Inserir um Post e Detectar Erros

Vamos começar com um exemplo básico de inserção de um novo post usando a função wp_insert_post. O código abaixo demonstra como validar os dados do post, lidar com erros e fornecer feedback aos usuários em caso de quaisquer problemas durante o processo de inserção.

// Include the necessary WordPress files
require_once(ABSPATH . 'wp-admin/includes/post.php');
// Create an array of post data for the new post
$new_post = array(
    'post_title'   => 'Sample Post Title', // Valid post name
    'post_content' => 'This is a custom post with error handling.', // Unslashed post data - Set the content of the new post
    'post_status'  => 'publish', // Unslashed post data - Set the status of the new post to 'publish'
    'post_author'  => 1, // Replace with the desired author's user ID
    'post_date'    => '2023-07-25 12:00:00', // Unslashed post data - Set a custom post date and time
);
// Insert post into the database
$post_id = wp_insert_post($new_post, true); // Use $wp_error set to true for error handling
// Check if there was an error during post insertion
if (is_wp_error($post_id)) {
    // Error occurred while inserting the post
    echo "Error: " . $post_id->get_error_message();
} else {
    // The post was successfully inserted, and $post_id contains the post ID
    echo "Post inserted successfully. New Post ID: " . $post_id;
}

Caso queira atualizar um post existente, basta usar o código abaixo:

// Include the necessary WordPress files
require_once(ABSPATH . 'wp-admin/includes/post.php');
$updated_post = array(
    'ID'           => $post_id, // Existing post ID
    'post_content' => 'This is the updated content of the post.', // Updated post content
);
// Update post in the database
$updated_post_id = wp_update_post($updated_post); // Updated post ID
// Check for errors during post updating
if (is_wp_error($updated_post_id)) { // Check if the result is a WP_Error object
    $error_message = $updated_post_id->get_error_message(); // Retrieve the error message
    // Handle the error, e.g., display an error message to the user
    echo "Error while updating the post: " . $error_message;
} else {
    // The post was successfully updated
    echo "Post updated successfully. New Post ID: " . $updated_post_id;
}

Como Inserir um Novo Post em um Banco De Dados WordPress

Vamos nos aprofundar no uso da função wp_insert_post para inserir novos dados de post e explorar parâmetros adicionais para definir campos de post personalizados, como o autor do post, a data do post e a categoria do post.

// Include the necessary WordPress files
require_once(ABSPATH . 'wp-includes/post.php');
// Create an array of post details for the new post
$new_post = array(
    'post_title'    => 'Test Post with Metadata', // Parsed post data - Set the title of the new post
    'post_content'  => 'This is a custom post with metadata and taxonomy terms.', // Post content - Set the content of the new post
    'post_type'     => 'post', // Processed post data - Set the post type to 'post'
    'post_status'   => 'publish', // Post status - Set the status of the new post to 'publish'
    'post_author'   => 1, // Replace with the desired author's user ID
    'post_date'     => '2023-07-21 12:00:00', // Post date - Set a custom post date and time
    'tags_input'    => array('tag1', 'tag2', 'tag3'), // Processed attachment post data - Set tags for the new post
    'page_template' => 'custom-template.php', // Invalid page template - Set a custom page template for the post
);

// Insert WordPress post into the database
$post_id = wp_insert_post($new_post); // Existing attachment post - Set the existing post ID for updating
// Check if the post was successfully inserted
if (!is_wp_error($post_id)) {
    // The post was successfully inserted, and $post_id contains the post ID
// Get the post meta field based on the post ID
    $meta_value = get_post_meta($post_id, 'meta_key_name', true);
    // Add custom post categories (replace with actual category IDs)
    $post_categories = array(2, 4); // Filters attachment post data - Category IDs to assign to the post
    wp_set_post_categories($post_id, $post_categories); // Set post categories
    // Add custom post meta data
    update_post_meta($post_id, '_custom_meta_key', 'Custom Meta Value'); // Replace '_custom_meta_key' with your custom meta key and set its value
    echo "Post inserted successfully. New Post ID: " . $post_id;
} else {
    // Error occurred while inserting the post
   echo "Error: " . $post_id->get_error_message();
}

Como Inserir um Post com Taxonomia Personalizada e Meta Dados de Post

O exemplo que iremos apresentar traz a inserção de um post com termos de taxonomia personalizados e metadados adicionais de post. A Taxonomia do WordPress permite que você organize e categorize posts com mais flexibilidade.

// Include the necessary WordPress files
require_once(ABSPATH . 'wp-includes/post.php');

// Create an array of post data for the new post
$new_post = array(
    'post_title'    => 'Custom Post with Taxonomy and Meta Data', // Otherwise unmodified post data - Set the title of the new post
    'post_content'  => 'This is a custom post with taxonomy and meta data.', // Post content - Set the content of the new post
    'post_type'     => 'post', // Post type - Set the post type to 'post'
    'post_status'   => 'pending', // Pending review posts - Set the status of the new post to 'pending' for review
    'post_author'   => 1, // Replace with the desired author's user ID
    'post_date'     => '2023-08-05 12:00:00', // Post date - Set a custom post date and time
    'post_name'     => 'custom-post-taxonomy-meta', // Otherwise unmodified post data - Set the post slug
);

// Insert post into the database
$post_id = wp_insert_post($new_post);

// Check if the post was successfully inserted
if (!is_wp_error($post_id)) {
    // The post was successfully inserted, and $post_id contains the post ID

    // Add custom post categories (replace with actual category IDs)
    $post_categories = array(2, 4); // Category IDs to assign to the post
    wp_set_post_categories($post_id, $post_categories); // Set post categories

    // Add post meta data
    update_post_meta($post_id, '_custom_meta_key', 'Custom Meta Value'); // Sanitized attachment post data - Replace '_custom_meta_key' with your custom meta key and set its value

    // Add custom taxonomy terms (replace with actual taxonomy and term IDs)
    wp_set_object_terms($post_id, array(3, 5), 'custom_taxonomy'); // Set custom taxonomy terms

    echo "Post inserted successfully with custom taxonomy and meta data. New Post ID: " . $post_id;
} else {
    // Error occurred while inserting the post
    echo "Error: " . $post_id->get_error_message();
}

Sugestão de Leitura

Aprenda mais sobre os posts do WordPress com nossos tutoriais:
Como Adicionar Posts relacionados no WordPress
Como Agendar Posts no WordPress.

Conclusão

Como vimos neste tutorial, a função wp_insert_post possibilita aos sites do WordPress a inserção simples de posts personalizados, simplificando o processo de adição ou atualização de conteúdo. Com essa função, os proprietários e desenvolvedores de sites WordPress garantem a consistência e a precisão em seus sites.

Seja você um desenvolvedor experiente do WordPress que deseja otimizar seus fluxos de trabalho ou um iniciante interessado em expandir seus conhecimentos, entender o wp_insert_post é uma habilidade importante que ajudará bastante o seu site WordPress.

Além disso, você pode aproveitar o wp_insert_post com outros recursos do WordPress, como o o Loop do WordPress, para aprimorar a exibição de conteúdo de forma dinâmica. Com essa sinergia, você entrega melhores experiências para os visitantes do seu site.

Author
O autor

Bruna Vidanya

Bruna Vidanya é tradutora na Hostinger Brasil. É graduada em Letras Tradução Inglês pela Universidade de Brasília e já foi estagiária tradutora no Senado Federal. Teve a sua primeira tradução – um livro infanto-juvenil – publicada pela Livraria Senado Federal. É apaixonada por tecnologia e agora demonstra essa paixão, com muito carinho, escrevendo e traduzindo artigos para a Hostinger. Nas horas vagas, Vidanya ama ficar com os seus três cachorrinhos: Madonna, Snoop e Scooby-Doo, além de ver séries (as sitcoms são as suas favoritas). Um fato curioso sobre a autora: seu primeiro bichinho de estimação foi um galo Garnisé, chamado Chico Liro.