{"id":228736,"date":"2022-10-26T12:51:00","date_gmt":"2022-10-26T09:51:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228736"},"modified":"2022-11-09T04:10:38","modified_gmt":"2022-11-09T01:10:38","slug":"creacion-programatica-de-usuarios-de-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/creacion-programatica-de-usuarios-de-wordpress\/","title":{"rendered":"Creaci\u00f3n program\u00e1tica de usuarios de WordPress"},"content":{"rendered":"\n<p>Esta publicaci\u00f3n es la segunda parte de una serie en la que estoy trabajando que habla sobre la <a href=\"https:\/\/tommcfarlin.com\/tag\/metadata-association\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Asociaci\u00f3n de metadatos<\/a> de WordPress, y la primera parte implica trabajar en el proceso de creaci\u00f3n de usuarios de WordPress mediante <a href=\"https:\/\/tommcfarlin.com\/create-a-user-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">programaci\u00f3n<\/a> (\u00a1pero han pasado cinco a\u00f1os!).<\/p>\n<p>He hablado de hacer esto antes, pero las cosas cambian con el tiempo a medida que ganamos m\u00e1s experiencia, \u00bfverdad? Y al trabajar en una serie como esta, creo que ayuda tener un conjunto de requisitos que podamos seguir, como m\u00ednimo, para simular c\u00f3mo ser\u00eda que esto sucediera en un proyecto real.<\/p>\n<p>Entonces, en esta publicaci\u00f3n en particular, vamos a echar un vistazo a lo siguiente:<\/p>\n<ol>\n<li>Recibir informaci\u00f3n del usuario en un formato de datos particular,<\/li>\n<li>Identificar qu\u00e9 informaci\u00f3n se requiere para crear un usuario,<\/li>\n<li>Creando el usuario,<\/li>\n<li>Asegurarnos de que nuestro c\u00f3digo est\u00e9 a la altura de los est\u00e1ndares de codificaci\u00f3n y la legibilidad.<\/li>\n<\/ol>\n<p>Parece mucho, aunque no tengo intenciones de hacer de esta una publicaci\u00f3n larga. Dicho esto, si esto es algo que est\u00e1 buscando para aprender c\u00f3mo pensar o c\u00f3mo abordar, entonces aqu\u00ed vamos.<\/p>\n<h2>Crear usuarios de WordPress<\/h2>\n<p>Suponga que alguien, tal vez un cliente o incluso usted mismo, como informaci\u00f3n que se utilizar\u00e1 para crear un usuario. Necesita al menos la siguiente informaci\u00f3n:<\/p>\n<ol>\n<li>un nombre de usuario,<\/li>\n<li>una contrase\u00f1a,<\/li>\n<li>Una direcci\u00f3n de correo electr\u00f3nico.<\/li>\n<\/ol>\n<p>Cuando se trata de crear un nombre de usuario, tiendo a favorecer el uso de la direcci\u00f3n de correo electr\u00f3nico como nombre de usuario porque es algo que est\u00e1 garantizado que es \u00fanico para casi cualquier persona que use la cuenta.<\/p>\n<p>Entonces, para este tutorial, eso es exactamente lo que voy a usar. En lo que respecta a la contrase\u00f1a, hablar\u00e9 sobre la generaci\u00f3n de contrase\u00f1as en un momento.<\/p>\n<p>Finalmente, puede asumir que los datos que tiene vienen en cualquier forma: tal vez est\u00e9 en JSON, tal vez en un CSV, tal vez en un XML. Cualquiera que sea el caso, depende de usted analizar esta informaci\u00f3n en PHP para que pueda trabajar f\u00e1cilmente con la informaci\u00f3n.<\/p>\n<p>Para simplificar las cosas en esta publicaci\u00f3n, supondr\u00e9 que tenemos un solo registro y que tendremos la informaci\u00f3n disponible en una matriz. Esto no significa que comience en una matriz, sino que eventualmente lo colocaremos en una matriz.<\/p>\n<h3>1 Informaci\u00f3n del Usuario<\/h3>\n<p>Supongamos que tenemos una persona llamada &quot;Meghan&quot; que vamos a agregar al sistema. Tenemos una direcci\u00f3n de correo electr\u00f3nico y eso es todo.<\/p>\n<p>Un personaje de ejemplo (representaci\u00f3n de artista, por supuesto \ud83d\ude42<\/p>\n<p>Pero eso est\u00e1 bien. Es el barebones de lo que necesitamos. As\u00ed que tomemos <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-00-user-information-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">esta informaci\u00f3n<\/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>Y convertirlo en algo que podamos usar para crear una cuenta.<\/p>\n<h3>2 Creaci\u00f3n de la cuenta<\/h3>\n<p>Lo primero que debemos hacer es asegurarnos de que no exista un usuario para esta direcci\u00f3n de correo electr\u00f3nico. Si es as\u00ed, simplemente regresaremos. Es posible que desee mostrar un <a href=\"https:\/\/code.tutsplus.com\/series\/creating-a-custom-wordpress-messaging-system--cms-1105\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">mensaje de configuraci\u00f3n<\/a> o alg\u00fan otro tipo de informaci\u00f3n para que el usuario final sepa que no est\u00e1 creando esta cuenta porque ya existe.<\/p>\n<p>Pero eso est\u00e1 m\u00e1s all\u00e1 del alcance de esta publicaci\u00f3n.<\/p>\n<p>En su lugar, vamos <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-01-user-already-exists-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">a volver<\/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>Por otra parte, supongamos que el usuario no existe. Si no lo hace, lo cual no deber\u00eda (de lo contrario, no hay raz\u00f3n para esta publicaci\u00f3n \ud83d\ude0f), entonces crearemos una cuenta para ella.<\/p>\n<p>Para hacer esto, necesitamos su direcci\u00f3n de correo electr\u00f3nico y una contrase\u00f1a. Afortunadamente, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-02-setting-a-password-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">generar una contrase\u00f1a<\/a> es simple:<\/p>\n<pre><code>&lt;?php\n\n$password = wp_generate_password( 16, false );\n<\/code><\/pre>\n<p>As\u00ed que ahora podemos tomar la direcci\u00f3n de correo electr\u00f3nico y la contrase\u00f1a y <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-03-creating-the-user-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">crear la cuenta de usuario<\/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>Tenga en cuenta que en el c\u00f3digo anterior tambi\u00e9n estamos configurando el rol. La forma de hacer esto es tomar primero una instancia de <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_user\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_User<\/a> y luego con nuestro $user_id y luego establecer el <a href=\"https:\/\/codex.wordpress.org\/Roles_and_Capabilities\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">rol<\/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=\"Creaci\u00f3n program\u00e1tica de usuarios de WordPress\" ><\/a><\/p>\n<p>Estoy optando por usar <strong>author<\/strong>, pero hay un conjunto de otros entre los que puede elegir (o usar lo que sea que est\u00e9 en su estructura de datos).<\/p>\n<h4>3 \u00bfNo hay m\u00e1s que eso?<\/h4>\n<p>Y con eso, tu usuario deber\u00eda estar creado. Parte de esto depende en gran medida del enlace que haya utilizado, c\u00f3mo lo haya implementado en su proceso y la forma en que le permita a un administrador crear cuentas.<\/p>\n<p>Este es un tema m\u00e1s avanzado que eventualmente me gustar\u00eda cubrir en una publicaci\u00f3n futura. Para mantener esta serie lo m\u00e1s directa y sencilla posible, trato de concentrarme en los pasos b\u00e1sicos requeridos.<\/p>\n<p>Todo lo dem\u00e1s puede implementarse o vestirse seg\u00fan cualquier otra cosa que se necesite seg\u00fan los requisitos del proyecto.<\/p>\n<h2>Eso es solo crear una cuenta<\/h2>\n<p>Sin embargo, esto es solo el procesamiento de crear usuarios de WordPress mediante programaci\u00f3n. De hecho, esto es solo crear un usuario.<\/p>\n<p>Para crear varios usuarios, suponga que tiene varias matrices con informaci\u00f3n a trav\u00e9s de la cual puede iterar y luego crear los usuarios. La implementaci\u00f3n es la misma aunque variar\u00e1 de cada cuenta.<\/p>\n<p>Dicho esto, ma\u00f1ana me ocupar\u00e9 de la creaci\u00f3n program\u00e1tica de contenido de publicaciones. Y despu\u00e9s de eso, hablaremos sobre c\u00f3mo relacionar a un usuario determinado con el contenido de la publicaci\u00f3n dada y qu\u00e9 podemos hacer con eso (adem\u00e1s de por qu\u00e9 esto ser\u00eda importante).<\/p>\n<h2>Publicaciones de la serie<\/h2>\n<ol>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-metadata-association\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Asociaci\u00f3n de metadatos de WordPress: c\u00f3mo hacerlo<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/creating-wordpress-users\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Creaci\u00f3n program\u00e1tica de usuarios de WordPress<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/es\/tipos-de-publicaciones-de-wordpress-una-abstraccion-para-las-entidades\/\" title=\"Tipos de publicaciones de WordPress: una abstracci\u00f3n para las entidades\">Tipos de publicaciones de WordPress: una abstracci\u00f3n para las entidades<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/es\/asociacion-de-metadatos-de-wordpress-entidades-relacionadas\/\" title=\"Asociaci\u00f3n de Metadatos de WordPress: Entidades Relacionadas\">Asociaci\u00f3n de Metadatos de WordPress: Entidades Relacionadas<\/a><\/li>\n<\/ol>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sin embargo, esto es solo el procesamiento de crear usuarios de WordPress mediante programaci\u00f3n. De hecho, esto es solo crear un usuario.<\/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":[892,716,914,861],"tags":[1172],"class_list":["post-228736","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-otro","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228736","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=228736"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228736\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/220605"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=228736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=228736"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=228736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}