Ultimamente estou trabalhando bastante com wordpress. E umas das coisas que gosto do wordpress é o poder de customização dele. Eu precisei personalizar o formulário de comentários adicionando novos campos a ele. Então nesse tutorial irei mostrar como proceder para fazer essa adição.
Vamos adicionar um campo para as pessoas deixarem o endereço do seu twitter.
Vá ao arquivo functions.php do seu tema , será nele que realizaremos todo o processo.
Primeiro vamos adicionar um novo campo no formulário, e para isso, usaremos uma função do wordpress chamado add_filter , com ela podemos modificar valores antes de ser inseridos no banco de dados, ou enviá-lo ao navegador. Criaremos uma função, e atribuiremos a add_filter, dizendo o nome do filtro que iremos utilizar.
[php]
<?php
/**
* Criamos uma função para adicionar um novo campo
* Utilizamos um array, para atribui esse campo
* e dizemos se queremos adicionar ele depois de uma campo.
* No nosso caso, depois do campo url
*/
function adiciona_campo_comentario(){
$valor = ‘<p class="comment-form-twitter">’;
$valor .= ‘<label for="twitter">Twitter</label>’;
$valor .= ‘@<input id="twitter" name="twitter" size="30" type="text" />’;
$valor .= ‘</p>’;
$campo[‘fields’][‘url’] = $valor;
return $campo;
}
/**
* Vamos agora atribuir nossa função para add_filter.
* E o filter que utilizaremos será o comment_form_defaults
*/
add_filter( ‘comment_form_defaults’, ‘adiciona_campo_comentario’);
[/php]
Já adicionamos um novo campo, agora precisamos salvar essa informação no banco de dados. E para isso utilizaremos duas funções: add_comment_meta, que irá adicionar um campo e o valor na tabela wp_commentmet , e a add_action que executa uma função em um momento especifico, ou quando ocorre algum evento. A nossa ação em si, seria quando for acionado o formulário de comentários
[php]
/**
* Criamos uma função para salvar o novo campos do comentário.
* E para isso precisamos passar por parametro o $comment_id, para informar
* de que comentário ele pertence.
* E utilizaremos uma outra função do wordpress, que é o add_comment_meta
* Ele recebe com parametro :
* $comment_id => id do comentario especificio
* $meta_key => o nome do campo que iremos adicionar
* meta_value => o valor do novo campo
*
*/
function salvar_campo_comentario($comment_id){
$twitter = strip_tags(trim($_POST[‘twitter’]));
add_comment_meta( $comment_id, ‘twitter’, $twitter);
}
/**
* Vamos agora atribuir essa função acima para add_action
* que irá executa e um determinado momento.
* E para informar em que momento , utilizando o valor comment_post
*/
add_action( ‘comment_post’, ‘salvar_campo_comentario’ );
[/php]
Veja que com muita facilidade adicionamos um novo campo e salvamos essa informação. E para recuperar esse valor, basta utilizar a função do wordpress get_comment_meta.:
[php]
get_comment_meta($comment->comment_ID, ‘twitter’, true ))
[/php]
No próximo tutorial mostrarei como listar os comentários mais recentes, e recuperaremos esse novo campo criado. Até a próxima.
Isso é somente para wordpress
Romulo, esse tutorial é especifico para wordpress.
Olá David!
Para inserir um novo campo em categorias (Menu > Posts > Categorias) o método vai na mesma direção do que apresentaste aqui?
(http://pt.forums.wordpress.org/topic/novo-campo-em-cadastro-de-categorias)
Blz Vinícius . Sim, seria nessa mesma direção, aqui tem um tutorial q pode te ajudar:
http://en.bainternet.info/2011/wordpress-category-extra-fields
Olá David,
estou com uma dúvida, não especificamente deste tutorial, mas sim sobre o wordpress. Estou fazendo um layout, e quero colocar os posts do wordpress no meu layout, e nao nos temas existentes. Poderia me ajudar ?
Mas vc quer aprender a fazer um tema para wordpress, seria isso?
Queria Somente postar artigos pelo wordpress e que os posts ficassem eu um layout html que irei fazer. . isso seria criar um novo tema ? olha esse site http://www.radiomyway.com.br/ e ve a parte de notícias, mais ou menos assim que quero fazer.
Então, pra isso vc precisa pegar seu layout html e css, e transformar ele em tema pra wordpress, onde vc pode decidir aonde será exibidos os posts.
Poderia de informar como posso fazer isso ? ou algum artigo que fale sobre isso ?
É o q mais tem , dá uma olhada nesse primeiro resultado do google: http://migre.me/cGYeR
Obrigado por me ajudar. Vlw chará.