Introdução
Pretende validar um URL de uma rede social no seu formulário? Para efeitos desta documentação, vamos permitir que o utilizador introduza um URL do Twitter e um URL do Facebook, mas queremos ter a capacidade de validar os URLs das redes sociais antes de o formulário ser submetido. Neste tutorial, vamos guiá-lo pelas etapas de como conseguir isso.
Criar o formulário
Primeiro, tem de criar o seu formulário. O nosso formulário incluirá dois campos Website / URL. Um será para um URL de seguimento do Twitter e o outro para um URL de seguimento do Facebook.
Se precisar de ajuda para criar o seu formulário, consulte esta documentação.
Adicionar o snippet
Agora que adicionou os campos, é altura de adicionar o fragmento de código ao seu site que validará um URL de rede social no seu formulário.
Se não tiver a certeza de como ou onde adicionar snippets ao seu site, consulte este tutorial.
/** * Confirm the correct social network link in the form. * * @link https://wpforms.com/developers/how-to-validate-a-social-media-url-field-in-your-form/ */ function wpf_dev_process_check_social_url( $fields, $entry, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #902. if ( absint( $form_data['id'] ) !== 902 ) { return $fields; } $fb_url = $fields[25][ 'value' ]; $findfb = 'facebook.com'; $find_fb_url = strpos($fb_url, $findfb); if ($find_fb_url === false) { // Check the field ID 25 to make sure it contains facebook.com wpforms()->process->errors[ $form_data[ 'id' ] ] [ '25' ] = esc_html__( 'Please enter a valid Facebook Profile URL.', 'plugin-domain' ); } $twitter_url = $fields[26][ 'value' ]; $findtwitter = 'twitter.com'; $find_twitter_url = strpos($twitter_url, $findtwitter); if ($find_twitter_url === false) { // Check the field ID 26 to make sure it contains twitter.com wpforms()->process->errors[ $form_data[ 'id' ] ] [ '26' ] = esc_html__( 'Please enter a valid Twitter Profile URL.', 'plugin-domain' ); } } add_action( 'wpforms_process', 'wpf_dev_process_check_social_url', 10, 3 );
No trecho de código acima, só estamos a utilizar este trecho no formulário ID 902 e apenas no campo ID 25, que é o campo URL do Facebook, e no campo 26, que é o campo URL do Twitter.
Quando os utilizadores introduzem uma ligação nesses campos que não correspondem ao que está listado no nosso fragmento de código acima, verão um erro depois de submeterem o formulário.
Terá de atualizar os IDs do formulário e do campo para corresponderem ao que tem no seu site. Se precisar de ajuda para encontrar essas IDs, consulte este tutorial.
E já está! Conseguiu validar com êxito um URL de uma rede social. Gostaria que os utilizadores iniciassem sessão automaticamente depois de preencherem o formulário de registo? Consulte o nosso artigo sobre Como iniciar automaticamente a sessão dos utilizadores após o registo.
Relacionadas
Referência da ação: wpforms_process
FAQ
P: Posso adicionar o LinkedIn a este snippet?
R: Sem dúvida! Para adicionar ao snippet acima para o LinkedIn, utilize este snippet e actualize o formulário e os IDs de campo para o formulário que está a utilizar.
/** * Confirm the correct social network link in the form. * * @link https://wpforms.com/developers/how-to-validate-a-social-media-url-field-in-your-form/ */ function wpf_dev_process_check_social_url( $fields, $entry, $form_data ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #902. if ( absint( $form_data['id'] ) !== 902 ) { return $fields; } $fb_url = $fields[25][ 'value' ]; $findfb = 'facebook.com'; $find_fb_url = strpos($fb_url, $findfb); if ($find_fb_url === false) { // Check the field ID 25 to make sure it contains facebook.com wpforms()->process->errors[ $form_data[ 'id' ] ] [ '25' ] = esc_html__( 'Please enter a valid Facebook Profile URL.', 'plugin-domain' ); } $twitter_url = $fields[26][ 'value' ]; $findtwitter = 'twitter.com'; $find_twitter_url = strpos($twitter_url, $findtwitter); if ($find_twitter_url === false) { // Check the field ID 26 to make sure it contains twitter.com wpforms()->process->errors[ $form_data[ 'id' ] ] [ '26' ] = esc_html__( 'Please enter a valid Twitter Profile URL.', 'plugin-domain' ); } $linkedin_url = $fields[27][ 'value' ]; $findlinkedin = 'linkedin.com'; $find_linkedin_url = strpos($linkedin_url, $findlinkedin); if ($find_linkedin_url === false) { // Check the field ID 27 to make sure it contains linkedin.com wpforms()->process->errors[ $form_data[ 'id' ] ] [ '27' ] = esc_html__( 'Please enter a valid LinkedIn Profile URL.', 'plugin-domain' ); } } add_action( 'wpforms_process', 'wpf_dev_process_check_social_url', 10, 3 );