{"id":229179,"date":"2022-10-26T13:30:00","date_gmt":"2022-10-26T10:30:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229179"},"modified":"2022-11-09T05:56:34","modified_gmt":"2022-11-09T02:56:34","slug":"criando-usuarios-do-wordpress-programaticamente","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/criando-usuarios-do-wordpress-programaticamente\/","title":{"rendered":"Criando usu\u00e1rios do WordPress programaticamente"},"content":{"rendered":"\n<p>Este post \u00e9 a segunda parte de uma s\u00e9rie em que estou trabalhando que fala sobre WordPress <a href=\"https:\/\/tommcfarlin.com\/tag\/metadata-association\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Metadata Association<\/a>, e a primeira parte disso envolve trabalhar no processo de cria\u00e7\u00e3o <a href=\"https:\/\/tommcfarlin.com\/create-a-user-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">program\u00e1tica<\/a> de \u00a0usu\u00e1rios do WordPress (mas j\u00e1 se passaram cinco anos!).<\/p>\n<p>J\u00e1 falei sobre fazer isso antes, mas as coisas mudam com o tempo \u00e0 medida que ganhamos mais experi\u00eancia, certo? E ao trabalhar com uma s\u00e9rie como essa, acho que ajuda ter um conjunto de requisitos que podemos seguir, no m\u00ednimo, para simular como seria ter isso acontecendo em um projeto real.<\/p>\n<p>Ent\u00e3o, neste post em particular, vamos dar uma olhada no seguinte:<\/p>\n<ol>\n<li>Receber informa\u00e7\u00f5es do usu\u00e1rio em um formato de dados espec\u00edfico,<\/li>\n<li>Identificar quais informa\u00e7\u00f5es s\u00e3o necess\u00e1rias para criar um usu\u00e1rio,<\/li>\n<li>Criando o usu\u00e1rio,<\/li>\n<li>Garantir que nosso c\u00f3digo esteja de acordo com os padr\u00f5es de codifica\u00e7\u00e3o e a legibilidade.<\/li>\n<\/ol>\n<p>Parece muito, embora eu n\u00e3o tenha a inten\u00e7\u00e3o de fazer um post longo. Dito isto, se isso \u00e9 algo que voc\u00ea est\u00e1 procurando aprender a pensar ou como resolver, ent\u00e3o aqui vamos n\u00f3s.<\/p>\n<h2>Criando usu\u00e1rios do WordPress<\/h2>\n<p>Assuma que algu\u00e9m \u2013 talvez um cliente ou talvez apenas voc\u00ea mesmo \u2013 como informa\u00e7\u00e3o que ser\u00e1 usada para criar um usu\u00e1rio. Ele precisa de pelo menos as seguintes informa\u00e7\u00f5es:<\/p>\n<ol>\n<li>um nome de usu\u00e1rio,<\/li>\n<li>uma senha,<\/li>\n<li>um endere\u00e7o de e-mail.<\/li>\n<\/ol>\n<p>Quando se trata de criar um nome de usu\u00e1rio, costumo preferir usar o endere\u00e7o de e-mail como nome de usu\u00e1rio tamb\u00e9m, porque \u00e9 algo que garante ser exclusivo para quase todos que usam a conta.<\/p>\n<p>Ent\u00e3o, para este tutorial, \u00e9 exatamente isso que vou usar. No que diz respeito \u00e0 senha, falarei brevemente sobre a gera\u00e7\u00e3o de senha.<\/p>\n<p>Finalmente, voc\u00ea pode assumir que os dados que voc\u00ea tem v\u00eam de qualquer forma: talvez em JSON, talvez em um CSV, talvez em um XML. Seja qual for o caso, cabe a voc\u00ea analisar essas informa\u00e7\u00f5es em PHP para que voc\u00ea possa trabalhar facilmente com as informa\u00e7\u00f5es.<\/p>\n<p>Para manter as coisas simples para este post, vou assumir que temos um \u00fanico registro e vamos ter as informa\u00e7\u00f5es dispon\u00edveis em uma matriz. Isso n\u00e3o significa que ele come\u00e7a em um array, mas significa que eventualmente o colocamos em um array.<\/p>\n<h3>1 Informa\u00e7\u00f5es do usu\u00e1rio<\/h3>\n<p>Suponha que temos uma pessoa chamada &quot;Meghan&quot; que vamos adicionar ao sistema. Temos um endere\u00e7o de e-mail e \u00e9 isso.<\/p>\n<p>Um exemplo de persona (renderiza\u00e7\u00e3o de artista, \u00e9 claro \ud83d\ude42<\/p>\n<p>Mas est\u00e1 tudo bem. \u00c9 o esqueleto do que precisamos. Ent\u00e3o vamos pegar <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-00-user-information-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">essas informa\u00e7\u00f5es<\/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>E transform\u00e1-lo em algo que possamos usar para criar uma conta.<\/p>\n<h3>2 Criando a conta<\/h3>\n<p>A primeira coisa que precisamos fazer \u00e9 garantir que ainda n\u00e3o exista um usu\u00e1rio para este endere\u00e7o de e-mail. Se isso acontecer, ent\u00e3o simplesmente retornaremos. Voc\u00ea pode querer exibir uma <a href=\"https:\/\/code.tutsplus.com\/series\/creating-a-custom-wordpress-messaging-system--cms-1105\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">mensagem de configura\u00e7\u00f5es<\/a> ou algum outro tipo de informa\u00e7\u00e3o para que o usu\u00e1rio final saiba que voc\u00ea n\u00e3o est\u00e1 criando esta conta porque ela j\u00e1 existe.<\/p>\n<p>Mas isso est\u00e1 al\u00e9m do escopo deste post.<\/p>\n<p>Em vez disso, vamos <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-01-user-already-exists-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">retornar<\/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>Ent\u00e3o, novamente, vamos supor que o usu\u00e1rio n\u00e3o existe. Se ela n\u00e3o fizer isso \u2013 o que n\u00e3o deveria (caso contr\u00e1rio, n\u00e3o h\u00e1 raz\u00e3o para este post \ud83d\ude0f) \u2013 ent\u00e3o vamos criar uma conta para ela.<\/p>\n<p>Para fazer isso, precisamos de seu endere\u00e7o de e-mail e uma senha. Felizmente, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-02-setting-a-password-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">gerar uma senha<\/a> \u00e9 simples:<\/p>\n<pre><code>&lt;?php\n\n$password = wp_generate_password( 16, false );\n<\/code><\/pre>\n<p>Ent\u00e3o agora podemos pegar o endere\u00e7o de e-mail e a senha e <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-03-creating-the-user-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">criar a conta de usu\u00e1rio<\/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>Observe que no c\u00f3digo acima tamb\u00e9m estamos definindo a fun\u00e7\u00e3o. A maneira de fazer isso \u00e9 primeiro pegar uma inst\u00e2ncia de <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_user\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_User<\/a> e, em seguida, com nosso $user_id, definir a <a href=\"https:\/\/codex.wordpress.org\/Roles_and_Capabilities\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fun\u00e7\u00e3o<\/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=\"Criando usu\u00e1rios do WordPress programaticamente\" ><\/a><\/p>\n<p>Estou optando por usar <strong>author<\/strong>, mas h\u00e1 um conjunto de outros que voc\u00ea pode escolher (ou usar o que estiver em sua estrutura de dados).<\/p>\n<h4>3 N\u00e3o h\u00e1 mais do que isso?<\/h4>\n<p>E com isso, seu usu\u00e1rio deve ser criado. Parte disso depende muito do gancho que voc\u00ea usou, de como implementou isso em seu processo e da maneira como est\u00e1 permitindo que um administrador crie contas.<\/p>\n<p>Este \u00e9 um t\u00f3pico mais avan\u00e7ado que eventualmente gostaria de abordar em um post futuro. Para manter esta s\u00e9rie o mais direta e enxuta poss\u00edvel, estou tentando manter o foco nas etapas principais necess\u00e1rias.<\/p>\n<p>Todo o resto pode ser implementado ou vestido de acordo com o que for necess\u00e1rio de acordo com os requisitos do projeto.<\/p>\n<h2>Isso \u00e9 apenas criar uma conta<\/h2>\n<p>No entanto, este \u00e9 apenas o processamento de criar usu\u00e1rios do WordPress programaticamente. Na verdade, isso \u00e9 apenas criar um usu\u00e1rio.<\/p>\n<p>Para criar v\u00e1rios usu\u00e1rios, suponha que voc\u00ea tenha v\u00e1rios arrays com informa\u00e7\u00f5es pelas quais voc\u00ea pode iterar e, em seguida, criar os usu\u00e1rios. A implementa\u00e7\u00e3o \u00e9 a mesma, embora varie de cada conta.<\/p>\n<p>Com isso dito, amanh\u00e3 eu vou falar sobre a cria\u00e7\u00e3o de conte\u00fado de postagem de forma program\u00e1tica. E depois disso, falaremos sobre como relacionar um determinado usu\u00e1rio ao conte\u00fado da postagem e o que podemos fazer com isso (e tamb\u00e9m por que isso importaria).<\/p>\n<h2>Postagens da s\u00e9rie<\/h2>\n<ol>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-metadata-association\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Associa\u00e7\u00e3o de metadados do WordPress: como fazer<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/creating-wordpress-users\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Criando usu\u00e1rios do WordPress programaticamente<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/tipos-de-postagem-do-wordpress-uma-abstracao-para-entidades\/\" title=\"Tipos de postagem do WordPress: uma abstra\u00e7\u00e3o para entidades\">Tipos de postagem do WordPress: uma abstra\u00e7\u00e3o para entidades<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/associacao-de-metadados-do-wordpress-entidades-relacionadas\/\" title=\"Associa\u00e7\u00e3o de Metadados do WordPress: Entidades Relacionadas\">Associa\u00e7\u00e3o de Metadados do WordPress: Entidades Relacionadas<\/a><\/li>\n<\/ol>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>No entanto, este \u00e9 apenas o processamento de criar usu\u00e1rios do WordPress programaticamente. Na verdade, isso \u00e9 apenas criar um usu\u00e1rio.<\/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":[898,722,920,867],"tags":[1170],"class_list":["post-229179","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","category-outro","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229179","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=229179"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229179\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/220605"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=229179"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=229179"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=229179"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}