Você está aqui: Home / wordpress / publicar post via php no wordpress.html

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

3 Responses to Publicar Post via PHP No WordPress

Página 1 de 11
  • Poxa, muito bom o artigo. Já é o suficiente para eu tentar umas coisas novas. Valeu!

    07/08Responder
    Nivaldo Arruda
  • Muito legal, mas fiquei com dúvida o arquivo scritp.php fica na raiz ou fica dentro tema .

    abraço!

    11/12Responder
    jader
  • Olá 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/12Responder
    Livro Wordpress
Página 1 de 11

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>