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


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

editar campos personalizados

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

Os campos personalizados

Campos personalizados na página de registro

E, para fazer isso, como de costume, vamos criar um plugin simples e agradável!

Etapa 1: criar o plug-in

Crie uma nova pasta no wp-content / plugins e chame-a de “métodos de contato do usuário personalizados”. Dentro desta pasta recém-criada, crie um arquivo chamado “rc-custom-user-contact-methods.php” e abra-o no seu software editor favorito.

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

Etapa 2: defina seus campos personalizados

Em seguida, precisamos criar uma variável que contenha nossos campos personalizados, os que serão 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 = matriz (
matriz ('facebook', __ ('nome de usuário do Facebook', 'rc_cucm'), verdadeiro),
array ('twitter', __ ('Nome de usuário do Twitter', 'rc_cucm'), verdadeiro),
matriz ('googleplus', __ ('ID do Google+', 'rc_cucm'), verdadeiro),
matriz ('linkedin', __ ('ID do link vinculado', 'rc_cucm'), false),
array ('pinterest', __ ('Nome de usuário do Pinterest', 'rc_cucm'), false),
array ('wordpress', __ ('nome de usuário do WordPress.org', 'rc_cucm'), false),
matriz ('telefone', __ ('número de telefone', 'rc_cucm'), verdadeiro)
);

Estamos armazenando todos os campos em uma matriz com 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 é exibido na página de registro ou não . Você pode adicionar quantos parâmetros quiser, por exemplo, um espaço reservado ou uma informação necessária.

Etapa 3: Conecte 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 o user_contactmethods para adicionar novos campos
add_filter ('user_contactmethods', 'rc_add_user_contactmethods');

Etapa 4: criar nossos campos personalizados

Agora precisamos criar a função "rc_add_user_contactmethods". É o que adicionará nossos campos personalizados à página de edição do usuário. A boa notícia é que armazenamos nossos campos em uma matriz, 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.

/ **
* Adicione aos usuários personalizados métodos de contato personalizados
*
* @access public
* @ desde 1.0
* @return void
* /
função rc_add_user_contactmethods ($ user_contactmethods) {

// Obter campos
global $ extra_fields;

// Exibe cada campo
foreach ($ extra_fields como $ field) {
if (! isset ($ contactmethods [$ campo [0]])))
$ user_contactmethods [$ campo [0]] = $ campo [1];
}

// Retorna os métodos de contato
retornar $ 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 dados de campos "salvar". Portanto, o plugin está funcionando muito bem no momento. Mas gostaria de ir um pouco mais longe e adicionar a opção para 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:

// Adicione nossos campos ao processo de registro
add_action ('register_form', 'rc_register_form_display_extra_fields');
add_action ('registro do usuário', 'rc_user_register_save_extra_fields', 100);

Etapa 6: Exibir página de registro de campos personalizados

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

/ **
* Mostrar campos personalizados na página de registro
*
* Mostrar campos personalizados no registro se o terceiro parâmetro do campo estiver definido como true
*
* @access public
* @ desde 1.0
* @return void
* /
função rc_register_form_display_extra_fields () {

// Obter campos
global $ extra_fields;

// Exibe cada campo se o 3º parâmetro estiver definido como "true"
foreach ($ extra_fields como $ field) {
if ($ field [2] == true) {
$ field_value = isset ($ _POST [$ field [0]])? $ _POST [$ campo [0]]: '';
eco '

'; } // fim se } // fim do foreach }

Etapa 7: Armazenar valores dos campos no processo de registro

Agora que nossos campos são mostrados na página de registro, precisamos armazenar seus valores no banco de dados. Este é o aime da função "rc_user_register_save_extra_fields". Para fazer isso, precisamos usar o "wp_update_user ()Função.

/ **
* Salvar valores do campo
*
* @access public
* @ desde 1.0
* @return void
* /
função rc_user_register_save_extra_fields ($ user_id, $ password = '', $ meta = array ()) {

// Obter campos
global $ extra_fields;

$ userdata = array ();
$ userdata ['ID'] = $ user_id;

// Salve cada campo
foreach ($ extra_fields como $ field) {
if ($ field [2] == true) {
$ userdata [$ campo [0]] = $ _POST [$ campo [0]];
} // fim se
} // fim do 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 os campos existentes, como "Yahoo IM", "AIM" e "Jabber", fazendo um simples cancelamento (). Mas você também pode adicionar algumas funções para limpar seus campos personalizados, a fim de verificar, por exemplo, se o número de telefone tem um formato apropriado, 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ê deseja exibir os dados de qualquer um dos seus campos, basta usar o seguinte:

// Param 1 é ID do usuário
// O parâmetro 2 é o ID do campo
// O parâmetro 3 está lá para obter um var ou um array
echo get_user_meta (1, 'twitter', verdadeiro);  
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me