{"id":29078,"date":"2021-06-07T11:25:00","date_gmt":"2021-06-07T08:25:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29078"},"modified":"2021-10-17T16:25:50","modified_gmt":"2021-10-17T13:25:50","slug":"iniciar-sesion-con-numero-de-telefono-en-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/iniciar-sesion-con-numero-de-telefono-en-wordpress\/","title":{"rendered":"Iniciar sesi\u00f3n con n\u00famero de tel\u00e9fono en WordPress"},"content":{"rendered":"<p>Es posible que haya colocado un formulario de inicio de sesi\u00f3n de front-end en su sitio web de WordPress. Y desea permitir que los usuarios inicien sesi\u00f3n con su n\u00famero de tel\u00e9fono o usando el nombre de usuario \/ correo electr\u00f3nico. B\u00e1sicamente, est\u00e1 permitiendo que los usuarios ingresen cualquiera de las entradas de Nombre de usuario \/ Correo electr\u00f3nico \/ Tel\u00e9fono y una contrase\u00f1a.<\/p>\n<p>Tenga en cuenta que este tutorial no pretende mostrar el inicio de sesi\u00f3n con OTP. En su lugar, agregar\u00e9 una opci\u00f3n m\u00e1s de n\u00famero de tel\u00e9fono junto con el nombre de usuario y el correo electr\u00f3nico. Para que sus usuarios puedan elegir cualquier opci\u00f3n que les resulte conveniente. Probablemente vio esta opci\u00f3n en Amazon. Amazon nos permite iniciar sesi\u00f3n con un correo electr\u00f3nico o un n\u00famero de tel\u00e9fono m\u00f3vil.<\/p>\n<p>Voy a crear un formulario de inicio de sesi\u00f3n simple. En el env\u00edo del formulario, escribiremos un c\u00f3digo que verifica las credenciales en segundo plano para las 3 opciones (nombre de usuario \/ correo electr\u00f3nico \/ tel\u00e9fono) y una contrase\u00f1a.<\/p>\n<p>Para agregar un n\u00famero de tel\u00e9fono en un formulario de inicio de sesi\u00f3n, debe insertar el n\u00famero de tel\u00e9fono de un usuario en la tabla &#8216;wp_usermeta&#8217;. Puede hacerlo en el momento del registro de usuario. El siguiente c\u00f3digo se puede utilizar para agregar un n\u00famero de tel\u00e9fono de un usuario.<\/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>Una vez que tenga meta_key &#8216;user_phone&#8217; junto con su valor en la base de datos, podr\u00e1 agregar el inicio de sesi\u00f3n con la opci\u00f3n de n\u00famero de tel\u00e9fono en un formulario de inicio de sesi\u00f3n. Pongamos el siguiente formulario de inicio de sesi\u00f3n en su p\u00e1gina de inicio de sesi\u00f3n.<\/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>En el c\u00f3digo anterior, estamos verificando errores e imprimi\u00e9ndolos. Escribiremos c\u00f3digo para manejar errores en los pr\u00f3ximos pasos. Adem\u00e1s, agregamos un nonce en el formulario, que es la forma recomendada de procesar formularios en WordPress.<\/p>\n<h3>Iniciar sesi\u00f3n con n\u00famero de tel\u00e9fono en WordPress<\/h3>\n<p>Cuando un usuario completa las credenciales y presiona un bot\u00f3n de env\u00edo, tomaremos las credenciales y las verificaremos con la base de datos. Si las credenciales son correctas, iniciaremos la sesi\u00f3n del usuario y lo redirigiremos a la p\u00e1gina de inicio. En caso de credenciales incorrectas, los errores se registran con la <code>WP_Error<\/code>clase.<\/p>\n<p>Por lo tanto, escriba el c\u00f3digo a continuaci\u00f3n en el <code>functions.php<\/code>archivo que procesa el formulario de inicio de sesi\u00f3n.<\/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>Aqu\u00ed, primero verificamos el nonce para proteger nuestro formulario de ciertos tipos de mal uso, c\u00f3digo malicioso y ataques CSRF. A continuaci\u00f3n, seg\u00fan el m\u00e9todo <code>is_email()<\/code>o el <code>is_numeric()<\/code>correo electr\u00f3nico, comprueba el correo electr\u00f3nico y el n\u00famero de tel\u00e9fono v\u00e1lidos. Si el valor ingresado no es un correo electr\u00f3nico o un tel\u00e9fono, elegimos el nombre de usuario. Si se satisfacen las credenciales, los usuarios inician sesi\u00f3n en el sistema y redirigen a la p\u00e1gina de inicio. En su caso, puede redirigir a los usuarios a otra p\u00e1gina seg\u00fan su flujo.<\/p>\n<p>Espero que comprenda c\u00f3mo integrar el inicio de sesi\u00f3n con un n\u00famero de tel\u00e9fono en WordPress. Comparta sus pensamientos y sugerencias en la secci\u00f3n de comentarios a continuaci\u00f3n.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/cargar-contenido-dinamico-en-bootstrap-modal-en-wordpress\/\" title=\"Cargar contenido din\u00e1mico en Bootstrap Modal en WordPress\" >Cargar contenido din\u00e1mico en Bootstrap Modal en WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-construir-un-widget-elementor-personalizado\/\" title=\"C\u00f3mo construir un widget Elementor personalizado\" >C\u00f3mo construir un widget Elementor personalizado<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-agregar-puntos-finales-personalizados-a-la-api-de-wordpress\/\" title=\"C\u00f3mo agregar puntos finales personalizados a la API de WordPress\" >C\u00f3mo agregar puntos finales personalizados a la API de WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este art\u00edculo, estudiamos c\u00f3mo integrar el inicio de sesi\u00f3n con el n\u00famero de tel\u00e9fono en WordPress. A veces es una opci\u00f3n conveniente para sus usuarios. 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":[606],"tags":[849],"class_list":["post-29078","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/29078","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=29078"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/29078\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/20317"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=29078"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=29078"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=29078"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}