Adicionar novo campo no formulário dos comentários no wordpress

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 
 /**
  * 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');

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

  /**
   * 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' );

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.:

  get_comment_meta($comment->comment_ID, 'twitter', true ))

No próximo tutorial mostrarei como listar os comentários mais recentes, e recuperaremos esse novo campo criado. Até a próxima.

 

11 thoughts on “Adicionar novo campo no formulário dos comentários no wordpress

  1. 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 ?

        1. 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.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *