{"id":28318,"date":"2021-06-07T11:38:00","date_gmt":"2021-06-07T08:38:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28318"},"modified":"2021-10-18T04:03:54","modified_gmt":"2021-10-18T01:03:54","slug":"login-com-numero-de-telefone-no-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/login-com-numero-de-telefone-no-wordpress\/","title":{"rendered":"Login com n\u00famero de telefone no WordPress"},"content":{"rendered":"<p>Voc\u00ea pode ter colocado um formul\u00e1rio de login de front-end em seu site WordPress. E voc\u00ea deseja permitir que os usu\u00e1rios fa\u00e7am login com seu n\u00famero de telefone ou usando nome de usu\u00e1rio \/ e-mail. Basicamente, voc\u00ea est\u00e1 permitindo que os usu\u00e1rios insiram qualquer uma das entradas de Nome de usu\u00e1rio \/ E-mail \/ Telefone e uma senha.<\/p>\n<p>Observe que este tutorial n\u00e3o pretende mostrar login com OTP. Em vez disso, vou adicionar mais uma op\u00e7\u00e3o de n\u00famero de telefone junto com nome de usu\u00e1rio e e-mail. Assim, seus usu\u00e1rios podem escolher qualquer op\u00e7\u00e3o que seja conveniente para eles. Voc\u00ea provavelmente viu essa op\u00e7\u00e3o na Amazon. A Amazon nos permite fazer login com e-mail ou n\u00famero de celular.<\/p>\n<p>Vou criar um formul\u00e1rio de login simples. No envio do formul\u00e1rio, escreveremos um c\u00f3digo que verifica as credenciais em segundo plano para todas as 3 op\u00e7\u00f5es (nome de usu\u00e1rio \/ e-mail \/ telefone) e uma senha.<\/p>\n<p>Para adicionar um n\u00famero de telefone em um formul\u00e1rio de login, voc\u00ea deve inserir um n\u00famero de telefone de um usu\u00e1rio na tabela &#8216;wp_usermeta&#8217;. Voc\u00ea pode fazer isso no momento do registro do usu\u00e1rio. O c\u00f3digo abaixo pode ser usado para adicionar o n\u00famero de telefone de um usu\u00e1rio.<\/p>\n<pre><code>&lt;?php\n$user_id = 1;\n$phone_number = 9999999999;\nadd_user_meta( $user_id, 'user_phone', $phone_number);<\/code><\/pre>\n<p>Depois de ter meta_key &#8216;user_phone&#8217; junto com seu valor no banco de dados, voc\u00ea pode adicionar login com a op\u00e7\u00e3o de n\u00famero de telefone em um formul\u00e1rio de login. Vamos colocar o seguinte formul\u00e1rio de login em sua p\u00e1gina de login.<\/p>\n<pre><code>&lt;?php\n$return = log_the_user_in();\nif( is_wp_error( $return)) {\n\u00a0\u00a0\u00a0\u00a0echo $return-&gt;get_error_message();\n}\n?&gt;\n&lt;form method=\"post\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"text\" name=\"user_login\" placeholder=\"Username, email or mobile\" required \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"password\" name=\"user_password\" placeholder=\"Password\" required \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"hidden\" name=\"login_nonce\" value=\"&lt;?php echo wp_create_nonce('login_nonce'); ?&gt;\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"login_the_user\" value=\"Submit\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>No c\u00f3digo acima, estamos verificando os erros e imprimindo-os. Escreveremos c\u00f3digo para lidar com erros nas pr\u00f3ximas etapas. Al\u00e9m disso, adicionamos um nonce no formul\u00e1rio, que \u00e9 a forma recomendada de processamento de formul\u00e1rios no WordPress.<\/p>\n<h3>Login com n\u00famero de telefone no WordPress<\/h3>\n<p>Quando um usu\u00e1rio preenche as credenciais e clica em um bot\u00e3o de envio, pegaremos as credenciais e as verificaremos no banco de dados. Se as credenciais estiverem corretas, faremos o login do usu\u00e1rio e o redirecionaremos para a p\u00e1gina inicial. Em caso de credenciais erradas, os erros s\u00e3o registrados com a <code>WP_Error<\/code>classe.<\/p>\n<p>Ent\u00e3o escreva o c\u00f3digo abaixo no <code>functions.php<\/code>arquivo que processa o formul\u00e1rio de login.<\/p>\n<pre><code>&lt;?php\nadd_action( 'init', 'log_the_user_in' );\nfunction log_the_user_in() {\n\u00a0\u00a0\u00a0\u00a0if (isset( $_POST['login_the_user']) &amp;&amp; wp_verify_nonce( $_REQUEST['login_nonce'], 'login_nonce')) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! empty( $_POST['user_login']) &amp;&amp;! empty( $_POST['user_password'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (is_email( $_POST['user_login'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ check user by email\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = get_user_by( 'email', $_POST['user_login'] );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} elseif (is_numeric( $_POST['user_login'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ check user by phone number\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0global $wpdb;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$tbl_usermeta = $wpdb-&gt;prefix.'usermeta';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user_id = $wpdb-&gt;get_var( $wpdb-&gt;prepare( \"SELECT user_id FROM $tbl_usermeta WHERE meta_key=%s AND meta_value=%s\", 'user_phone', $_POST['user_login']) );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = get_user_by( 'ID', $user_id );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ check user by username\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = get_user_by( 'login', $_POST['user_login'] );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! $user) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return new WP_Error('wrong_credentials', 'Invalid credentials.');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ check the user's login with their password.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! wp_check_password( $_POST['user_password'], $user-&gt;user_pass, $user-&gt;ID)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return new WP_Error('wrong_credentials', 'Invalid credentials.');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_clear_auth_cookie();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_set_current_user($user-&gt;ID);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_set_auth_cookie($user-&gt;ID);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_redirect(get_bloginfo('url'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0exit;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return new WP_Error('empty', 'Both fields are required.');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Aqui, primeiro verificamos o nonce para proteger nosso formul\u00e1rio de certos tipos de uso indevido, c\u00f3digo malicioso e ataques CSRF. Em seguida, com base no m\u00e9todo <code>is_email()<\/code>ou <code>is_numeric()<\/code>, ele verifica o e-mail e o n\u00famero de telefone v\u00e1lidos. Se o valor inserido n\u00e3o for um e-mail ou telefone, vamos para o nome de usu\u00e1rio. Se as credenciais forem satisfeitas, os usu\u00e1rios efetuam login no sistema e redirecionam para a p\u00e1gina inicial. No seu caso, voc\u00ea pode redirecionar os usu\u00e1rios para outra p\u00e1gina de acordo com o seu fluxo.<\/p>\n<p>Espero que voc\u00ea entenda como integrar o login a um n\u00famero de telefone no WordPress. Por favor, compartilhe seus pensamentos e sugest\u00f5es na se\u00e7\u00e3o de coment\u00e1rios abaixo.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/carregar-conteudo-dinamico-no-bootstrap-modal-no-wordpress\/\" title=\"Carregar Conte\u00fado Din\u00e2mico no Bootstrap Modal no WordPress\" >Carregar Conte\u00fado Din\u00e2mico no Bootstrap Modal no WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-construir-um-elemento-customizado-ou-widget\/\" title=\"Como construir um elemento customizado ou widget\" >Como construir um elemento customizado ou widget<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-adicionar-endpoints-personalizados-a-api-wordpress\/\" title=\"Como adicionar endpoints personalizados \u00e0 API WordPress\" >Como adicionar endpoints personalizados \u00e0 API WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo, estudamos como integrar login com n\u00famero de telefone no WordPress. \u00c0s vezes, \u00e9 uma op\u00e7\u00e3o conveniente para seus usu\u00e1rios. Amazonas<\/p>\n","protected":false},"author":1,"featured_media":20317,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[613],"tags":[848],"class_list":["post-28318","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-9","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=28318"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/28318\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/20317"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=28318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=28318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=28318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}