Para quem trabalha com blogs em WordPress e/ou tem projetos que necessitam que os usuários se registrem antes de começarem a usar o sistema, provavelmente já sentiu necessidade de adicionar campos específicos ao registro de usuários nesse mesmo WordPress. Primeiro que tudo, teremos de acrescentar esses campos ao perfil de usuário no sistema do WordPress, e posteriormente mostrar esses campos para o usuário no acto de registro em seu site/blog. Este processo é extremamente simples de realizar, e permite-lhe acrescentar quantos campos você desejar, com as informações que você precisar. Dessa forma, você pode coletar informações específicas como a morada do usuário, perfis de mídias sociais, celular, etc., dependendo da especificidade do seu projeto. O desenvolvedor Tom McFarlin falou recentemente deste assunto, e aproveitámos algumas das dicas dele para este artigo, a fim de o ajudar a adicionar campos ao registro de usuários no WordPress.
DEFININDO OS CAMPOS
O primeiro passo é definir concretamente quais os campos que você pretende colocar como imprescindíveis ao registro no seu website ou blog. Para tornar as coisas simples e meramente explicativas, vamos resumir o nosso registro de usuário a 4 campos fundamentais:
- Primeiro Nome
- Último Nome
- Endereço de Email
- Código Postal
O WordPress suporta nativamente todos esses campos, excepto o campo de Código Postal, pelo que teremos de acrescentar essa campo manualmente aos meta dados do usuário. Tenha em consideração também que o processo de validação até ao registro de um usuário é grande. Existem várias validações pelo caminho, pelo que é necessário que você tome especial atenção a strings vazias, endereços de email bem formados, código postal bem formado, etc, para que não dê pau no final. Isso significa que é necessário sanitizar todos os campos, e que nenhum campo é introduzido no banco de dados sem ser sanitizado primeiro.
ADICIONAR CAMPOS AO REGISTRO
Assumindo que todos os campos são válidos, você pode começar a programar o registro de usuário. Tendo em consideração que a introdução de dados é colocada na variável $input
, você pode usar a função wp_insert_user. Note que esta função retorna o ID do usuário assim que ele é criado:
$user_id = wp_insert_user( array( 'user_login' => $input['email_address'], 'user_pass' => wp_generate_password ( 12, false ), 'first_name' => $input['first_name'], 'last_name' => $input['last_name'], 'user_email' => $input['email_address'], 'display_name' => $input['first_name'] . ' ' . $input['last_name'], 'nickname' => $input['first_name'] . ' ' . $input['last_name'], 'role' => 'None' ) );
Note que iremos usar também a função wp_generate_password para gerar automaticamente uma password para o usuário.
Embora estejamos a criar um usuário, nós teremos de acrescentar o campo de Código Postal ao perfil desse mesmo usuário. Para fazermos isso, poderemos tirar vantagem da função update_user_meta. Uma vez que a função wp_insert_user
retorna o ID do usuário que acabou de ser criado, poderemos facilmente associar um Código Postal a esse mesmo usuário:
update_user_meta( $user_id, 'zip_code', $input['zip_code'] );
Simples de realizar, mas pouco prático uma vez que não conseguimos visualizar esse campo no perfil do usuário. É altura de trabalharmos nesse aspecto.
TRABALHANDO O PERFIL DO USUÁRIO
Para conseguirmos ver os meta dados que criámos para o usuário, precisamos fazer duas coisas:
- Adicionar uma nova coluna na dashboard de usuários do WordPress
- Renderizar o código postal associado ao usuário em questão
O WordPress providencia dois truques/ganchos para fazermos isso: manage_users_columns
e manage_users_custom_column
.
Primeiro que tudo, teremos de adicionar uma nova coluna na dashboard de usuários:
/** * Adds a Zip Code column to the user display dashboard. * * @param $columns The array of columns that are displayed on the user dashboard * @return The updated array of columns now including zip codes. */ function theme_add_user_zip_code_column( $columns ) { $columns['zip_code'] = __( 'Zip Code', 'theme' ); return $columns; } // end theme_add_user_zip_code_column add_filter( 'manage_users_columns', 'theme_add_user_zip_code_column' );
Depois, iremos retornar o código postal associado ao usuário:
/** * Populates the Zip Code column with the specified user's zip code. * * @param $value An empty string * @param $column_name The name of the column to populate * @param $user_id The ID of the user for which we're working with * @return The zip code associated with the user */ function theme_show_user_zip_code_data( $value, $column_name, $user_id ) { if( 'zip_code' == $column_name ) { return get_user_meta( $user_id, 'zip_code', true ); } // end if } // end theme_show_user_zip_code_data add_action( 'manage_users_custom_column', 'theme_show_user_zip_code_data', 10, 3 );
Assumindo que você fez tudo bem, o resultado final será parecido com este aqui:
Caso o usuário não tenha Código Postal, nenhuma informação é retornada e a dashboard não dispara nenhum aviso. Por outro lado, se o usuário tiver um código postal, ele será mostrado na coluna que criámos para esse efeito. Logicamente, este é apenas um exemplo daquilo que você poderá fazer com os meta dados de registro de usuários no WordPress. Dependendo das especificidades do seu negócio, você pode criar diversos campos e colunas para apresentar esses dados facilmente. Caso não pretenda que os dados sejam mostrados nas colunas da dashboard, você pode simplesmente saltar esse passo.
Até Já!