Publicar Post via PHP No WordPress
Para você ter acesso as classes do cms blog WordPress eu conheço três formas.
1- Através de plugins
2- Através do arquivo functions do thema corrente
3- Incluindo o cabeçalho do wordpress em qualquer arquivo PHP
Veremos nesse post como publicar posts através de uma página php incluindo o cabeçalho do cms wordpress. Lembrando que essa página será separada do blog, ou seja, você só estará incluindo o cabeçalho do sistema para ter acesso às classes e configurações desejadas.
Uma vez que você inclui o cabeçalho do cms WordPress em algum script php, você já terá acesso ao banco de dados, e a todas as funções php ou javascript que o sistema possua. Além disso, as funções oferecidas pelos plugins que estiverem ativos, também estarão disponíveis para uso em sua página php. Muito bom isso, não?
Vamos meter a mão na massa, mas vamos enumerar e ir passo a passo para facilitar o etendimento por parte dos leigos no assunto.
1- Crie um arquivo com algum nome sugestivo na mesma pasta onde o blog está instalado, no meu caso é dentro da pasta www e eu nomeio o meu script como my-script.php
2- Agora abra esse arquivo php em seu editor web preferido, eu costumo ir com a maioria dos usuários e utilizo o DreamWeaver da Adobe. No arquivo – na abba código html – abra as tags php e digite o seguinte:
include("wp-blog-header.php");
Isso é tudo que você precisa fazer para ter acesso a todas as funções e configurações que o wordpress tem pra lhe oferecer. Realmente isso é muito útil e fácil de implementar, parabéns para a equipe de mantenedores do cms e também parabéns para os colaboradores que não são poucos.
3- Para a tarefa de criar um novo post o wordpress já possui uma função para isso, prontinha para ser utilizada por nós nesse exemplo. Essa função se chama wp_insert_post e é utilizada pelo próprio cms para inserir novos posts. A função wp_insert_post possui vários parâmetros, mas muitos podem ser omitidos, se o que você quer é apenas inserir um novo post pasta seguir o código abaixo:
function create_post(){
// Cria o objeto $post
$my_post = array();
$my_post['post_title'] = 'My post';
$my_post['post_content'] = 'This is my post.';
$my_post['post_status'] = 'publish';
$my_post['post_author'] = 1;
$my_post['post_category'] = array(1);
// Insere o Post no Banco de Dados
wp_insert_post( $my_post );
}
A função wp_insert_post possui um parâmetro array no formato objeto. Esse parâmetro, como visto acima, pode ser criado de forma muito fácil, veja a descrição de cada um dos parâmetros que utilizamos acima.
- $my_post = array(); //Aqui simplesmente criamos uma variável array vazia;
- $my_post['post_title'] = ‘My post’; //Aqui você deve colocar o título que esse post terá
- $my_post['post_content'] = ‘This is my post.’; // Aqui você deve colocar o conteúdo do post
- $my_post['post_status'] = ‘publish’; // Esse parâmetro é bem interessante, se você colocar publish, o post será publicado no blog, mas também pode ser utilizado ‘draft’, nesse caso o post será marcado como um rasculho e não será publicado automaticamente.
- $my_post['post_author'] = 1; // Aqui você deve colocar o ID do autor, esse ID você pode ver lá no painel do wordpress, vá na parte de usuários depois edite um usuário, você notará que no topo do browser vai aparecer o id do usuário que você está editando. Lembrando que o ID 1 é sempre o admin do blog.
- $my_post['post_category'] = array(1); // Nesse parâmetro você deve colocar um array, isso se deve porque um post pode ter várias categorias a ele atribuídas, então basta passar um array com todas as categorias. Mesmo que o post só tenha uma categoria, essa deve ser informada como array, vide o exemplo que fizemos.
4- Coloquei esse script dentro de uma função para que não seja executado sempre que a página my-script.php for aberta no navegador, mas agora, lembre-se que você precisará chamar ela, isso é simples, basta inserir no código o chamada dessa forma create_post();
Bem, isso já é suficiente para a maioria das soluções que você vá utilizar com o wp_insert_post, mas vamos ver mais algumas curiosidades também úteis em alguns casos. Essa função wp_insert_post, na verdade, possui somente dois parâmetros que são de preenchimento obrigatório, que são o título e o conteúdo do post. Isso é possível porque essa função possui parâmetros padrões, que caso o usuário não forneça-os, eles são utilizados.
Vejam os parâmetros com seus valores padrões:
$defaults = array(
'post_status' => 'draft',
'post_type' => 'post',
'post_author' => $user_ID,
'ping_status' => get_option('default_ping_status'),
'post_parent' => 0,
'menu_order' => 0,
'to_ping' => '',
'pinged' => '',
'post_password' => '',
'guid' => '',
'post_content_filtered' => '',
'post_excerpt' => '',
'import_id' => 0);
Qualquer um desses valores podem ser sobreescritos, para isso basta você informar o respectivo valor no array objeto antes de chamar a função wp_insert_post. Há outros parâmetros ou valores que podem ser informados durante a criação do objeto post. Inclusive alguns muito importantes, como o caso do ID. Se o ID do post for informado, essa função não irá inserir um novo post, mas atualizar o post com o ID especificado com os novos dados como título, conteúdo, etc.
Veja a lista completa dos valores que o array post pode conter:
$post = array( 'ID' => [ <post id> ] //Se for informado, o função vai atualizar o post 'menu_order' => [ <order> ] //Caso o post seja uma página, define a ordem dela 'comment_status' => [ 'closed' | 'open' ] // Permitir comentários ou não 'ping_status' => [ 'closed' | 'open' ] // Permitir pingbacks ou não 'pinged' => [ ? ] //? 'post_author' => [ <user ID> ] //O ID do autor 'post_category' => [ array(<category id>, <...>) ] // Array da(s) categoria(s) 'post_content' => [ <the text of the post> ] //O conteúdo ou texto do post 'post_date' => [ Y-m-d H:i:s ] //A data do post 'post_date_gmt' => [ Y-m-d H:i:s ] //A data GMT do post. 'post_excerpt' => [ <an excerpt> ] //Excerpt do post 'post_name' => [ <the name> ] // Url do post (slug) 'post_parent' => [ <post ID> ] // Configura hierarquia do post 'post_password' => [ ? ] // Senha do post 'post_status' => [ 'draft' | 'publish' | 'pending'| 'future' ] // Status do post 'post_title' => [ <the title> ] // Título do post 'post_type' => [ 'post' | 'page' ] // Define se é um post ou página 'tags_input' => [ '<tag>, <tag>, <...>' ] // Tags do post separadas por virgula 'to_ping' => [ ? ] //? );
Para quem não percebeu, a dobradinha post_date e post_status, pode ser utilizada para agendar a publicação de um post. Para isso basta colocar ‘future’ em post_status e em post_date a data que o mesmo deve ser publicado.
Pessoal, vou ficar por aqui, lembrando que o objetivo desse artigo foi mostrar para vocês como publicar um post ou artigo no blog wordpress através de uma página php utilizando a função wp_insert_post
Nos próximos artigos veremos mais idéias, dicas e sugestões sobre WordPress, suas características e também algumas peripécias do bendito







Poxa, muito bom o artigo. Já é o suficiente para eu tentar umas coisas novas. Valeu!
07/08Muito legal, mas fiquei com dúvida o arquivo scritp.php fica na raiz ou fica dentro tema .
abraço!
11/12Olá Jader, o local do seu script não importa muito. Porém, se eu fosse você colocaria ele na raiz do site. Caso você vá colocar o script dentro de alguma pasta específica, lembre-se de alterar o caminho do include(“wp-blog-header.php”);
12/12