{"id":228553,"date":"2022-10-26T13:02:00","date_gmt":"2022-10-26T10:02:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228553"},"modified":"2022-11-09T03:04:07","modified_gmt":"2022-11-09T00:04:07","slug":"programowe-tworzenie-uzytkownikow-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/programowe-tworzenie-uzytkownikow-wordpress\/","title":{"rendered":"Programowe tworzenie u\u017cytkownik\u00f3w WordPress"},"content":{"rendered":"\n<p>Ten post jest drug\u0105 cz\u0119\u015bci\u0105 serii, nad kt\u00f3r\u0105 pracuj\u0119, kt\u00f3ra m\u00f3wi o WordPress <a href=\"https:\/\/tommcfarlin.com\/tag\/metadata-association\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Metadata Association<\/a>, a pierwsza cz\u0119\u015b\u0107 dotyczy pracy nad procesem <a href=\"https:\/\/tommcfarlin.com\/create-a-user-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">programowego<\/a> tworzenia u\u017cytkownik\u00f3w WordPressa (ale min\u0119\u0142o ju\u017c pi\u0119\u0107 lat!).<\/p>\n<p>M\u00f3wi\u0142em o tym wcze\u015bniej, ale z czasem wszystko si\u0119 zmienia, gdy zdobywamy wi\u0119cej do\u015bwiadczenia, prawda? My\u015bl\u0119, \u017ce przy pracy nad seri\u0105 tak\u0105 jak ta, warto mie\u0107 zestaw wymaga\u0144, kt\u00f3re mo\u017cemy spe\u0142ni\u0107, przynajmniej do symulacji, jak to jest, gdy tak si\u0119 dzieje w prawdziwym projekcie.<\/p>\n<p>W tym konkretnym po\u015bcie przyjrzymy si\u0119 nast\u0119puj\u0105cym:<\/p>\n<ol>\n<li>Otrzymywanie informacji o u\u017cytkowniku w okre\u015blonym formacie danych,<\/li>\n<li>okre\u015blenie, jakie informacje s\u0105 wymagane do utworzenia u\u017cytkownika,<\/li>\n<li>Tworzenie u\u017cytkownika,<\/li>\n<li>Upewnienie si\u0119, \u017ce nasz kod jest zgodny ze standardami kodowania i czytelno\u015bci\u0105.<\/li>\n<\/ol>\n<p>Brzmi to du\u017co, chocia\u017c nie mam zamiaru robi\u0107 z tego d\u0142ugiego postu. To powiedziawszy, je\u015bli jest to co\u015b, co chcesz nauczy\u0107 si\u0119 przemy\u015ble\u0107 lub jak sobie z tym poradzi\u0107, to zaczynamy.<\/p>\n<h2>Tworzenie u\u017cytkownik\u00f3w WordPress<\/h2>\n<p>Za\u0142\u00f3\u017cmy, \u017ce kto\u015b \u2013 by\u0107 mo\u017ce klient, a mo\u017ce nawet Ty \u2013 jako informacja, kt\u00f3ra zostanie wykorzystana do stworzenia u\u017cytkownika. Potrzebuje co najmniej nast\u0119puj\u0105cych informacji:<\/p>\n<ol>\n<li>nazwa u\u017cytkownika,<\/li>\n<li>has\u0142o,<\/li>\n<li>adres e-mail.<\/li>\n<\/ol>\n<p>Je\u015bli chodzi o tworzenie nazwy u\u017cytkownika, wol\u0119 u\u017cywa\u0107 adresu e-mail jako nazwy u\u017cytkownika, poniewa\u017c jest to co\u015b, co z pewno\u015bci\u0105 b\u0119dzie unikalne dla prawie ka\u017cdego, kto korzysta z konta.<\/p>\n<p>Wi\u0119c w tym samouczku w\u0142a\u015bnie tego u\u017cyj\u0119. Je\u015bli chodzi o has\u0142o, om\u00f3wi\u0119 za chwil\u0119 generowanie has\u0142a.<\/p>\n<p>Na koniec mo\u017cesz za\u0142o\u017cy\u0107, \u017ce dane, kt\u00f3re posiadasz, maj\u0105 dowoln\u0105 form\u0119: by\u0107 mo\u017ce s\u0105 w formacie JSON, by\u0107 mo\u017ce w pliku CSV, mo\u017ce w formacie XML. Niezale\u017cnie od przypadku, do Ciebie nale\u017cy przetworzenie tych informacji do PHP, aby\u015b m\u00f3g\u0142 \u0142atwo z nimi pracowa\u0107.<\/p>\n<p>Aby upro\u015bci\u0107 ten post, zak\u0142adam, \u017ce mamy pojedynczy rekord i b\u0119dziemy mie\u0107 dost\u0119p do informacji w postaci tablicy. Nie oznacza to, \u017ce zaczyna si\u0119 w tablicy, ale oznacza to, \u017ce ostatecznie umieszczamy go w tablicy.<\/p>\n<h3>1 Informacje o u\u017cytkowniku<\/h3>\n<p>Za\u0142\u00f3\u017cmy, \u017ce mamy osob\u0119 o imieniu \u201eMeghan&quot;, kt\u00f3r\u0105 zamierzamy doda\u0107 do systemu. Mamy adres e-mail i to wszystko.<\/p>\n<p>Przyk\u0142adowa persona (oczywi\u015bcie renderowanie artysty \ud83d\ude42<\/p>\n<p>Ale to dobrze. To szkielet tego, czego potrzebujemy. We\u017amy wi\u0119c <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-00-user-information-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">te informacje<\/a> :<\/p>\n<pre><code>&lt;?php\n\n$user_info = array(\n  'email'      =&gt; 'meghan@emaildomain.com',\n  'first_name' =&gt; 'Meghan',\n  'last_name'  =&gt; 'McFarlin',\n);\n<\/code><\/pre>\n<p>I przekszta\u0142\u0107 to w co\u015b, czego mo\u017cemy u\u017cy\u0107 do utworzenia konta.<\/p>\n<h3>2 Tworzenie konta<\/h3>\n<p>Pierwsz\u0105 rzecz\u0105, kt\u00f3r\u0105 musimy zrobi\u0107, to upewni\u0107 si\u0119, \u017ce u\u017cytkownik nie istnieje ju\u017c dla tego adresu e-mail. Je\u015bli tak, po prostu wr\u00f3cimy. Mo\u017cesz wy\u015bwietli\u0107 <a href=\"https:\/\/code.tutsplus.com\/series\/creating-a-custom-wordpress-messaging-system--cms-1105\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">komunikat o ustawieniach<\/a> lub inny rodzaj informacji, aby poinformowa\u0107 u\u017cytkownika ko\u0144cowego, \u017ce nie tworzysz tego konta, poniewa\u017c ju\u017c istnieje.<\/p>\n<p>Ale to wykracza poza zakres tego postu.<\/p>\n<p>Zamiast tego <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-01-user-already-exists-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wr\u00f3cimy<\/a> :<\/p>\n<pre><code>&lt;?php\n\n\/\/ Read the email address - if it's - invalid or the user exists, then return.\n$email = $user_info['email'];\nif (! filter_var( $email, FILTER_VALIDATE_EMAIL) || username_exists( $email)) {\n  return;\n}\n<\/code><\/pre>\n<p>Za\u0142\u00f3\u017cmy jednak, \u017ce u\u017cytkownik nie istnieje. Je\u015bli tego nie zrobi \u2013 a nie powinna (inaczej, nie ma sensu tego posta) \u2013 to utworzymy dla niej konto.<\/p>\n<p>Aby to zrobi\u0107, potrzebujemy jej adresu e-mail i has\u0142a. Na szcz\u0119\u015bcie <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-02-setting-a-password-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wygenerowanie has\u0142a<\/a> jest proste:<\/p>\n<pre><code>&lt;?php\n\n$password = wp_generate_password( 16, false );\n<\/code><\/pre>\n<p>Wi\u0119c teraz mo\u017cemy wzi\u0105\u0107 adres e-mail i has\u0142o i <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-03-creating-the-user-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">utworzy\u0107 konto u\u017cytkownika<\/a>.<\/p>\n<pre><code>&lt;?php\n\n\/\/ Grab the email and create a password.\n$email    = $user_info['email'];\n$password = wp_generate_password( 12, false );\n\n\/\/ Create the user and set her role.\n$user_id = wp_create_user( $email, $password, $email );\n\n\/\/ Set the user's role (and remove the previous role).\n$user = new WP_User( $user_id );\n$user-&gt;set_role( 'author' );\n<\/code><\/pre>\n<p>Zauwa\u017c, \u017ce w powy\u017cszym kodzie r\u00f3wnie\u017c ustawiamy rol\u0119. Sposobem na zrobienie tego jest najpierw pobranie instancji <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_user\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_User<\/a>, a nast\u0119pnie za pomoc\u0105 naszego $user_id, a nast\u0119pnie ustawienie <a href=\"https:\/\/codex.wordpress.org\/Roles_and_Capabilities\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">roli<\/a>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167649-61e7a6824dc60.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167649-61e7a6824dc60.png\" alt=\"Programowe tworzenie u\u017cytkownik\u00f3w WordPress\" ><\/a><\/p>\n<p>Zdecydowa\u0142em si\u0119 u\u017cy\u0107 <strong>autora<\/strong>, ale jest zestaw innych, z kt\u00f3rych mo\u017cesz wybra\u0107 (lub u\u017cy\u0107 tego, co jest w twojej strukturze danych).<\/p>\n<h4>3 Czy nie ma czego\u015b wi\u0119cej?<\/h4>\n<p>I dzi\u0119ki temu Tw\u00f3j u\u017cytkownik powinien zosta\u0107 stworzony. Cz\u0119\u015b\u0107 tego w du\u017cej mierze zale\u017cy od u\u017cywanego haka, sposobu, w jaki zaimplementowa\u0142e\u015b to w swoim procesie i sposobu, w jaki zezwalasz administratorowi na tworzenie kont.<\/p>\n<p>Jest to bardziej zaawansowany temat, kt\u00f3ry ostatecznie chcia\u0142bym om\u00f3wi\u0107 w przysz\u0142ym po\u015bcie. Aby ta seria by\u0142a jak najbardziej bezpo\u015brednia i szczup\u0142a, staram si\u0119 by\u0107 jak najbardziej skoncentrowany na wymaganych podstawowych krokach.<\/p>\n<p>Wszystko inne mo\u017cna wdro\u017cy\u0107 lub ubra\u0107 wok\u00f3\u0142 tego, co jest potrzebne, zgodnie z wymaganiami projektu.<\/p>\n<h2>To tylko tworzenie konta<\/h2>\n<p>Jest to jednak tylko przetwarzanie programowego tworzenia u\u017cytkownik\u00f3w WordPress. W rzeczywisto\u015bci jest to tylko utworzenie jednego u\u017cytkownika.<\/p>\n<p>Aby utworzy\u0107 wielu u\u017cytkownik\u00f3w, za\u0142\u00f3\u017cmy, \u017ce masz wiele tablic z informacjami, przez kt\u00f3re mo\u017cesz iterowa\u0107, a nast\u0119pnie tworzy\u0107 u\u017cytkownik\u00f3w. Implementacja jest taka sama, cho\u0107 r\u00f3\u017cni si\u0119 w zale\u017cno\u015bci od konta.<\/p>\n<p>Powiedziawszy to, jutro zajm\u0119 si\u0119 programistycznym tworzeniem tre\u015bci post\u00f3w. A potem porozmawiamy o powi\u0105zaniu danego u\u017cytkownika z dan\u0105 tre\u015bci\u0105 posta i o tym, co mo\u017cemy z tym zrobi\u0107 (oraz o tym, dlaczego mia\u0142oby to w og\u00f3le znaczenie).<\/p>\n<h2>Posty z serii<\/h2>\n<ol>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-metadata-association\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Stowarzyszenie metadanych WordPress: jak to zrobi\u0107<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/creating-wordpress-users\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Programowe tworzenie u\u017cytkownik\u00f3w WordPress<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/pl\/typy-postow-wordpress-abstrakcja-dla-podmiotow\/\" title=\"Typy post\u00f3w WordPress: abstrakcja dla podmiot\u00f3w\">Typy post\u00f3w WordPress: abstrakcja dla podmiot\u00f3w<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/pl\/stowarzyszenie-metadanych-wordpress-powiazane-podmioty\/\" title=\"Stowarzyszenie metadanych WordPress: powi\u0105zane podmioty\">Stowarzyszenie metadanych WordPress: powi\u0105zane podmioty<\/a><\/li>\n<\/ol>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jest to jednak tylko przetwarzanie programowego tworzenia u\u017cytkownik\u00f3w WordPress. W rzeczywisto\u015bci jest to tylko utworzenie jednego u\u017cytkownika.<\/p>\n","protected":false},"author":1,"featured_media":220605,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,919,897,866],"tags":[1169],"class_list":["post-228553","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-inny","category-kod","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/228553","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=228553"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/228553\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/220605"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=228553"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=228553"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=228553"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}