{"id":29098,"date":"2021-06-07T11:13:00","date_gmt":"2021-06-07T08:13:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29098"},"modified":"2021-10-18T03:36:33","modified_gmt":"2021-10-18T00:36:33","slug":"zaloguj-sie-za-pomoca-numeru-telefonu-w-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/zaloguj-sie-za-pomoca-numeru-telefonu-w-wordpress\/","title":{"rendered":"Zaloguj si\u0119 za pomoc\u0105 numeru telefonu w WordPress"},"content":{"rendered":"<p>Mo\u017cliwe, \u017ce umie\u015bci\u0142e\u015b front-endowy formularz logowania na swojej stronie WordPress. I chcesz zezwoli\u0107 u\u017cytkownikom na logowanie si\u0119 za pomoc\u0105 swojego numeru telefonu lub przy u\u017cyciu nazwy u\u017cytkownika\/adresu e-mail. Zasadniczo pozwalasz u\u017cytkownikom na wprowadzenie jednego z wpis\u00f3w z nazwy u\u017cytkownika \/ adresu e-mail \/ telefonu i has\u0142a.<\/p>\n<p>Zwr\u00f3\u0107 uwag\u0119, \u017ce ten samouczek nie ma na celu pokazania logowania za pomoc\u0105 OTP. Zamiast tego dodam jeszcze jedn\u0105 opcj\u0119 numeru telefonu wraz z nazw\u0105 u\u017cytkownika i adresem e-mail. Dzi\u0119ki temu Twoi u\u017cytkownicy mog\u0105 wybra\u0107 dowoln\u0105 dogodn\u0105 dla siebie opcj\u0119. Prawdopodobnie widzia\u0142e\u015b t\u0119 opcj\u0119 na Amazon. Amazon pozwala nam zalogowa\u0107 si\u0119 za pomoc\u0105 adresu e-mail lub numeru telefonu kom\u00f3rkowego.<\/p>\n<p>Zamierzam stworzy\u0107 prosty formularz logowania. Na formularzu przesy\u0142ania napiszemy kod, kt\u00f3ry sprawdza po\u015bwiadczenia w tle dla wszystkich 3 opcji (Nazwa u\u017cytkownika\/E-mail\/Telefon) oraz has\u0142o.<\/p>\n<p>Aby doda\u0107 numer telefonu w formularzu logowania, nale\u017cy wstawi\u0107 numer telefonu u\u017cytkownika w tabeli 'wp_usermeta&#8217;. Mo\u017cesz to zrobi\u0107 w momencie rejestracji u\u017cytkownika. Poni\u017cszy kod s\u0142u\u017cy do dodania numeru telefonu u\u017cytkownika.<\/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>Gdy ju\u017c masz meta_klucz 'user_phone&#8217; wraz z jego warto\u015bci\u0105 w bazie danych, mo\u017cesz doda\u0107 login z opcj\u0105 numeru telefonu w formularzu logowania. Umie\u015b\u0107my poni\u017cszy formularz logowania na twojej stronie logowania.<\/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>W powy\u017cszym kodzie sprawdzamy b\u0142\u0119dy i je drukujemy. W kolejnych krokach napiszemy kod do obs\u0142ugi b\u0142\u0119d\u00f3w. Dodatkowo dodali\u015bmy jednorazow\u0105 warto\u015b\u0107 w formularzu, co jest zalecanym sposobem przetwarzania formularzy w WordPressie.<\/p>\n<h3>Zaloguj si\u0119 za pomoc\u0105 numeru telefonu w WordPress<\/h3>\n<p>Gdy u\u017cytkownik wype\u0142ni dane uwierzytelniaj\u0105ce i naci\u015bnie przycisk przesy\u0142ania, pobierzemy dane uwierzytelniaj\u0105ce i zweryfikujemy je w bazie danych. Je\u015bli dane logowania s\u0105 poprawne, zalogujemy u\u017cytkownika i przekierujemy go na stron\u0119 g\u0142\u00f3wn\u0105. W przypadku b\u0142\u0119dnych po\u015bwiadcze\u0144, b\u0142\u0119dy s\u0105 rejestrowane w <code>WP_Error<\/code>klasie.<\/p>\n<p>Napisz poni\u017cszy kod w <code>functions.php<\/code>pliku, kt\u00f3ry przetwarza formularz logowania.<\/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>Tutaj najpierw zweryfikowali\u015bmy jednorazowy numer, aby chroni\u0107 nasz formularz przed niekt\u00f3rymi rodzajami nadu\u017cy\u0107, z\u0142o\u015bliwego kodu i atak\u00f3w CSRF. Nast\u0119pnie, na podstawie metody <code>is_email()<\/code>lub <code>is_numeric()<\/code>, sprawdza poprawny adres e-mail i numer telefonu. Je\u015bli wpisana warto\u015b\u0107 nie jest adresem e-mail lub telefonem, wybieramy nazw\u0119 u\u017cytkownika. Je\u015bli po\u015bwiadczenia s\u0105 spe\u0142nione, u\u017cytkownicy loguj\u0105 si\u0119 do systemu i przekierowuj\u0105 na stron\u0119 g\u0142\u00f3wn\u0105. W Twoim przypadku mo\u017cesz przekierowa\u0107 u\u017cytkownik\u00f3w na inn\u0105 stron\u0119 zgodnie ze swoim przep\u0142ywem.<\/p>\n<p>Mam nadziej\u0119, \u017ce rozumiesz, jak zintegrowa\u0107 logowanie z numerem telefonu w WordPressie. Podziel si\u0119 swoimi przemy\u015bleniami i sugestiami w sekcji komentarzy poni\u017cej.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/zaladuj-dynamiczna-zawartosc-na-bootstrap-modal-w-wordpress\/\" title=\"Za\u0142aduj dynamiczn\u0105 zawarto\u015b\u0107 na Bootstrap Modal w WordPress\" >Za\u0142aduj dynamiczn\u0105 zawarto\u015b\u0107 na Bootstrap Modal w WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-zbudowac-niestandardowy-widzet-elementor\/\" title=\"Jak zbudowa\u0107 niestandardowy wid\u017cet Elementor\" >Jak zbudowa\u0107 niestandardowy wid\u017cet Elementor<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-dodac-niestandardowe-punkty-koncowe-do-api-wordpress\/\" title=\"Jak doda\u0107 niestandardowe punkty ko\u0144cowe do API WordPress?\" >Jak doda\u0107 niestandardowe punkty ko\u0144cowe do API WordPress?<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym artykule dowiemy si\u0119, jak zintegrowa\u0107 logowanie z numerem telefonu w WordPress. Czasami jest to wygodna opcja dla Twoich u\u017cytkownik\u00f3w. Amazonka<\/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":[612],"tags":[847],"class_list":["post-29098","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-8","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29098","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=29098"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29098\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/20317"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=29098"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=29098"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=29098"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}