fbpx

SÓ HOJE 10% DE DESCONTO

USE O CUPOM: SABADO.FULL

00
Horas
00
Minutos
00
Segundos

Bem vindo ao
Blog da FULL.

Aprenda, crie e cresça seu negócio na internet.

Encontre conteúdos, dicas, tutoriais e novidades sobre as principais ferramentas Wordpress

Crie seus próprios campos de contato de usuário do WordPress

Você está em:

Crie seus próprios campos de contato de usuário do WordPress

Hoje eu criei um novo plugin para você. Um plugin que lida com os métodos de contato dos usuários. Basicamente quando você edita um usuário na administração, existe um bloco de “informações de contato”. Bem, eu gostaria de mostrar a você como adicionar seus próprios campos lá, e indo um pouco mais longe, como mostrar (ou não) esses novos campos na página de registro.

Aqui está uma prévia do que vamos criar:

edit-custom-fields

Novos campos de usuário na página de edição

Os campos personalizados

Campos personalizados na página de registro

E para isso, como de costume, vamos criar um plugin simples e legal!

Etapa 1: criar o plug-in

Crie uma nova pasta em wp-content/plugins e chame-a de “custom-user-contact-methods”. Dentro desta pasta recém-criada, crie um arquivo chamado “rc-custom-user-contact-methods.php” e abra-o em seu software de edição favorito.

Coloque este conteúdo em seu arquivo vazio. Este código simplesmente registra o plugin:

<?php

/*

Plugin Name: Custom User Contact Methods

Plugin URL: http://remicorson.com/

Description: Add custom fields to users “contact” section

Version: 1.0

Author: Remi Corson

Author URI: http://remicorson.com

Contributors: corsonr

*/

Etapa 2: definir seus campos personalizados

Em seguida, precisamos criar uma variável que conterá nossos campos personalizados, aqueles a serem usados na página de edição do usuário e também na página padrão de registro. Vamos armazenar esses campos em uma variável chamada $extra_fields.

$extra_fields =  array( 

array( ‘facebook’, __( ‘Facebook Username’, ‘rc_cucm’ ), true ),

array( ‘twitter’, __( ‘Twitter Username’, ‘rc_cucm’ ), true ),

array( ‘googleplus’, __( ‘Google+ ID’, ‘rc_cucm’ ), true ),

array( ‘linkedin’, __( ‘Linked In ID’, ‘rc_cucm’ ), false ),

array( ‘pinterest’, __( ‘Pinterest Username’, ‘rc_cucm’ ), false ),

array( ‘wordpress’, __( ‘WordPress.org Username’, ‘rc_cucm’ ), false ),

array( ‘phone’, __( ‘Phone Number’, ‘rc_cucm’ ), true )

);

Estamos armazenando cada campodentro de um array que possui 3 parâmetros, o primeiro é o ID do campo, o segundo é o rótulo do campo e o último é uma informação booleana que define se o campo é mostrado na página de cadastro ou não . Você pode adicionar quantos parâmetros desejar, por exemplo, um espaço reservado ou uma informação obrigatória.

Etapa 3: enganche o filtro certo

Agora precisamos conectar uma função ao filtro correto. No nosso caso específico, o filtro é “user_contactmethods”, e o nome da função que vamos criar é “rc_add_user_contactmethods”.

// Use the user_contactmethods to add new fields

add_filter( ‘user_contactmethods’, ‘rc_add_user_contactmethods’ );

Etapa 4: criar nossos campos personalizados

Agora precisamos criar a função “rc_add_user_contactmethods”. É aquele que adicionará nossos campos personalizados à página de edição do usuário. A boa notícia é que armazenamos nossos campos dentro de um array, isso significa que a função a seguir será totalmente dinâmica, e será muito fácil adicionar novos campos apenas modificando a variável $extra_fields.

/**

 * Add custom users custom contact methods

 *

 * @access      public

 * @since       1.0 

 * @return      void

*/

function rc_add_user_contactmethods( $user_contactmethods ) {

// Get fields

global $extra_fields;

// Display each fields

foreach( $extra_fields as $field ) {

if ( !isset( $contactmethods[ $field[0] ] ) )

     $user_contactmethods[ $field[0] ] = $field[1];

}

   // Returns the contact methods

    return $user_contactmethods;

}

Nesta etapa, se você salvar e ativar o plug-in, deverá ver seus campos personalizados na página de edição do usuário. Como estamos usando o gancho correto, não precisamos criar um campo de dados para “salvar”. Então, o plugin está funcionando muito bem no momento. Mas eu gostaria de ir um pouco além e adicionar a opção de exibir esses campos na página de registro. Certifique-se de verificar nas configurações a caixa de seleção “Qualquer pessoa pode se registrar”, caso contrário você não poderá ver o link “Registrar”.

Etapa 5: Ganchos da página de registro

Para adicionar nossos campos na página de registro, precisamos acessar pelo menos dois ganchos e criar duas funções. Um para exibir os campos e o segundo para salvar os dados dos campos no banco de dados.

Vamos ligar nossas funções:

// Add our fields to the registration process

add_action( ‘register_form’, ‘rc_register_form_display_extra_fields’ );

add_action( ‘user_register’, ‘rc_user_register_save_extra_fields’, 100 );

Etapa 6: exibir a página de registro de campos personalizados

No código acima declaramos duas funções. A primeira é exibir os campos na página de registro. Nesta parte precisamos cuidar do terceiro parâmetro de cada array em $extra_fields. Este parâmetro booleano informa se os campos devem ser mostrados ou não. True: o campo é mostrado, false: o campo não é mostrado.

/**

 * Show custom fields on registration page

 *

 * Show custom fields on registration if field third parameter is set to true

 *

 * @access      public

 * @since       1.0 

 * @return      void

 */

function rc_register_form_display_extra_fields() {

// Get fields

global $extra_fields;

// Display each field if 3th parameter set to “true”

foreach( $extra_fields as $field ) {

if ( $field[2] == true ) { 

$field_value = isset( $_POST[ $field[0] ] ) ? $_POST[ $field[0] ] : ”;

echo ‘<p>

<label for=”‘. esc_attr( $field[0] ) .'”>’. esc_html( $field[1] ) .'<br />

<input type=”text” name=”‘. esc_attr( $field[0] ) .'” id=”‘. esc_attr( $field[0] ) .'” class=”input” value=”‘. esc_attr( $field_value ) .'” size=”20″ /></label>

</label>

</p>’;

} // endif

} // end foreach

}

Etapa 7: Armazenar os valores dos campos no processo de registro

Agora que nossos campos são mostrados na página de cadastro, precisamos armazenar seus valores no banco de dados. Este é o objetivo da função “rc_user_register_save_extra_fields”. Para isso, precisamos usar a função “ wp_update_user() ”.

/**

 * Save field values

 *

 * @access      public

 * @since       1.0 

 * @return      void

*/

function rc_user_register_save_extra_fields( $user_id, $password = ”, $meta = array() )  {

// Get fields

    global $extra_fields;

    $userdata       = array();

    $userdata[‘ID’] = $user_id;

   // Save each field

    foreach( $extra_fields as $field ) {

     if( $field[2] == true ) { 

    $userdata[ $field[0] ] = $_POST[ $field[0] ];

    } // endif

} // end foreach

    $new_user_id = wp_update_user( $userdata );

}

Conclusão

Bem, vimos o básico de como adicionar novos campos aos métodos de contato do usuário, mas isso é tudo. Você pode, por exemplo, remover campos existentes como “Yahoo IM”, “AIM” e “Jabber” fazendo um simples unset(). Mas você também pode adicionar algumas funções para higienizar seus campos personalizados para verificar, por exemplo, se o número de telefone tem um formato adequado, se um campo é obrigatório ou não etc etc… Não hesite em solicitar recursos específicos nos comentários!

Ah, e uma última coisa… se você quiser exibir os dados de qualquer um dos seus campos, basta usar isto:

// Param 1 is user ID

// Param 2 is field ID

// Param 3 is there to get a var or an array

echo get_user_meta( 1, ‘twitter’, true ); 

Aprenda com a FULL.

Junte-se a mais de 50 mil pessoas que recebem em primeira mão as principais ferramentas e tecnologia para desenvolvimento web

Meu carrinho
🎁 Faltam R$300,00 para liberar o Cupom Secreto
Seu carrinho está vazio.

Parece que você não adicionou nada ao seu carrinho =(