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.

 




Se o conteúdo foi relevante para você, e desejar, você pode incentivar fazendo uma doação.

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 *