{"id":229027,"date":"2022-10-26T13:13:00","date_gmt":"2022-10-26T10:13:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229027"},"modified":"2022-11-09T05:19:43","modified_gmt":"2022-11-09T02:19:43","slug":"creation-par-programmation-dutilisateurs-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/creation-par-programmation-dutilisateurs-wordpress\/","title":{"rendered":"Cr\u00e9ation par programmation d&rsquo;utilisateurs WordPress"},"content":{"rendered":"\n<p>Cet article est la deuxi\u00e8me partie d&rsquo;une s\u00e9rie sur laquelle je travaille et qui parle de WordPress <a href=\"https:\/\/tommcfarlin.com\/tag\/metadata-association\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Metadata Association<\/a>, et la premi\u00e8re partie de cela implique de travailler sur le processus de cr\u00e9ation par <a href=\"https:\/\/tommcfarlin.com\/create-a-user-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">programmation<\/a> d&rsquo;utilisateurs WordPress (mais cela fait cinq ans !).<\/p>\n<p>J&rsquo;ai d\u00e9j\u00e0 parl\u00e9 de faire cela auparavant, mais les choses changent avec le temps \u00e0 mesure que nous acqu\u00e9rons plus d&rsquo;exp\u00e9rience, n&rsquo;est-ce pas\u00a0? Et en travaillant sur une s\u00e9rie comme celle-ci, je pense qu&rsquo;il est utile d&rsquo;avoir un ensemble d&rsquo;exigences que nous pouvons suivre, \u00e0 tout le moins, pour simuler \u00e0 quoi cela pourrait ressembler si cela se produisait dans un projet r\u00e9el.<\/p>\n<p>Donc, dans cet article particulier, nous allons jeter un \u0153il \u00e0 ce qui suit :<\/p>\n<ol>\n<li>Recevoir des informations utilisateur dans un format de donn\u00e9es particulier,<\/li>\n<li>Identifier les informations n\u00e9cessaires \u00e0 la cr\u00e9ation d&rsquo;un utilisateur,<\/li>\n<li>Cr\u00e9ation de l&rsquo;utilisateur,<\/li>\n<li>S&rsquo;assurer que notre code est conforme aux normes de codage et \u00e0 la lisibilit\u00e9.<\/li>\n<\/ol>\n<p>Cela semble beaucoup, m\u00eame si je n&rsquo;ai pas l&rsquo;intention d&rsquo;en faire un long article. Cela dit, si c&rsquo;est quelque chose que vous cherchez \u00e0 apprendre \u00e0 r\u00e9fl\u00e9chir ou \u00e0 aborder, alors c&rsquo;est parti.<\/p>\n<h2>Cr\u00e9ation d&rsquo;utilisateurs WordPress<\/h2>\n<p>Supposons que quelqu&rsquo;un &#8211; peut-\u00eatre un client ou peut-\u00eatre m\u00eame vous-m\u00eame &#8211; comme information qui sera utilis\u00e9e pour cr\u00e9er un utilisateur. Il lui faut au moins les informations suivantes :<\/p>\n<ol>\n<li>un nom d&rsquo;utilisateur,<\/li>\n<li>Un mot de passe,<\/li>\n<li>une adresse e-mail.<\/li>\n<\/ol>\n<p>Lorsqu&rsquo;il s&rsquo;agit de cr\u00e9er un nom d&rsquo;utilisateur, j&rsquo;ai tendance \u00e0 privil\u00e9gier l&rsquo;utilisation de l&rsquo;adresse e-mail comme nom d&rsquo;utilisateur \u00e9galement, car c&rsquo;est quelque chose qui est garanti d&rsquo;\u00eatre unique pour presque tous ceux qui utilisent le compte.<\/p>\n<p>Donc, pour ce tutoriel, c&rsquo;est exactement ce que je vais utiliser. En ce qui concerne le mot de passe, je parlerai momentan\u00e9ment de la g\u00e9n\u00e9ration de mot de passe.<\/p>\n<p>Enfin, vous pouvez supposer que les donn\u00e9es dont vous disposez se pr\u00e9sentent sous n&rsquo;importe quelle forme\u00a0: peut-\u00eatre sont-elles au format JSON, peut-\u00eatre au format CSV, peut-\u00eatre au format XML. Quel que soit le cas, c&rsquo;est \u00e0 vous d&rsquo;analyser ces informations en PHP afin que vous puissiez facilement travailler avec les informations.<\/p>\n<p>Pour garder les choses simples pour ce post, je vais supposer que nous avons un seul enregistrement et nous allons avoir les informations disponibles dans un tableau. Cela ne signifie pas qu&rsquo;il commence dans un tableau, mais cela signifie que nous le pla\u00e7ons \u00e9ventuellement dans un tableau.<\/p>\n<h3>1 Les informations de l&rsquo;utilisateur<\/h3>\n<p>Supposons que nous ayons une personne nomm\u00e9e &quot;Meghan&quot; que nous allons ajouter au syst\u00e8me. Nous avons une adresse e-mail, et c&rsquo;est tout.<\/p>\n<p>Un exemple de persona (rendu d&rsquo;artiste, bien s\u00fbr \ud83d\ude42<\/p>\n<p>Mais \u00e7a va. C&rsquo;est l&rsquo;essentiel de ce dont nous avons besoin. Prenons donc <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-00-user-information-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ces informations<\/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>Et transformez-le en quelque chose que nous pouvons utiliser pour cr\u00e9er un compte.<\/p>\n<h3>2 Cr\u00e9ation du compte<\/h3>\n<p>La premi\u00e8re chose que nous devons faire est de nous assurer qu&rsquo;un utilisateur n&rsquo;existe pas d\u00e9j\u00e0 pour cette adresse e-mail. Si c&rsquo;est le cas, nous reviendrons simplement. Vous souhaiterez peut-\u00eatre afficher 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\">message de param\u00e8tres<\/a> ou un autre type d&rsquo;informations pour informer l&rsquo;utilisateur final que vous ne cr\u00e9ez pas ce compte car il existe d\u00e9j\u00e0.<\/p>\n<p>Mais cela d\u00e9passe le cadre de cet article.<\/p>\n<p>Au lieu de cela, nous allons <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-01-user-already-exists-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">retourner<\/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>Encore une fois, supposons que l&rsquo;utilisateur n&rsquo;existe pas. Si elle ne le fait pas \u2013 ce qu&rsquo;elle ne devrait pas (sinon, il n&rsquo;y a aucune raison pour ce post \ud83d\ude0f) \u2013 alors nous allons lui cr\u00e9er un compte.<\/p>\n<p>Pour ce faire, nous avons besoin de son adresse e-mail et d&rsquo;un mot de passe. Heureusement, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-02-setting-a-password-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">g\u00e9n\u00e9rer un mot de passe<\/a> est simple :<\/p>\n<pre><code>&lt;?php\n\n$password = wp_generate_password( 16, false );\n<\/code><\/pre>\n<p>Nous pouvons donc maintenant prendre l&rsquo;adresse e-mail et le mot de passe et <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d0b38a220778882f23f9de7a69c420e6#file-03-creating-the-user-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cr\u00e9er le compte d&rsquo;utilisateur<\/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>Notez que dans le code ci-dessus, nous d\u00e9finissons \u00e9galement le r\u00f4le. La fa\u00e7on de proc\u00e9der consiste \u00e0 saisir d&rsquo;abord une instance de <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_user\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_User<\/a>, puis avec notre $user_id, puis \u00e0 d\u00e9finir le <a href=\"https:\/\/codex.wordpress.org\/Roles_and_Capabilities\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">r\u00f4le<\/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=\"Cr\u00e9ation par programmation d&#039;utilisateurs WordPress\" ><\/a><\/p>\n<p>Je choisis d&rsquo;utiliser <strong>author<\/strong>, mais vous pouvez choisir parmi un ensemble d&rsquo;autres (ou utiliser tout ce qui se trouve dans votre structure de donn\u00e9es).<\/p>\n<h4>3 N&rsquo;y a-t-il pas plus que cela ?<\/h4>\n<p>Et avec cela, votre utilisateur devrait \u00eatre cr\u00e9\u00e9. Cela d\u00e9pend en grande partie du crochet que vous avez utilis\u00e9, de la mani\u00e8re dont vous l&rsquo;avez impl\u00e9ment\u00e9 dans votre processus et de la mani\u00e8re dont vous autorisez un administrateur \u00e0 cr\u00e9er des comptes.<\/p>\n<p>C&rsquo;est un sujet plus avanc\u00e9 que j&rsquo;aimerais \u00e9ventuellement aborder dans un prochain article. Pour garder cette s\u00e9rie aussi directe et aussi l\u00e9g\u00e8re que possible, j&rsquo;essaie de rester aussi concentr\u00e9 sur les \u00e9tapes de base requises.<\/p>\n<p>Tout le reste peut \u00eatre mis en \u0153uvre ou habill\u00e9 autour de tout ce qui est n\u00e9cessaire selon les exigences du projet.<\/p>\n<h2>C&rsquo;est juste cr\u00e9er un compte<\/h2>\n<p>Cependant, il ne s&rsquo;agit que du traitement de la cr\u00e9ation par programme d&rsquo;utilisateurs WordPress. En fait, il ne s&rsquo;agit que de cr\u00e9er un utilisateur.<\/p>\n<p>Pour cr\u00e9er plusieurs utilisateurs, supposez que vous disposez de plusieurs tableaux contenant des informations dans lesquelles vous pouvez it\u00e9rer, puis cr\u00e9ez les utilisateurs. La mise en \u0153uvre est la m\u00eame bien qu&rsquo;elle varie d&rsquo;un compte \u00e0 l&rsquo;autre.<\/p>\n<p>Cela dit, demain, je vais m&rsquo;occuper de la cr\u00e9ation de contenu de publication par programmation. Et apr\u00e8s cela, nous parlerons de la relation entre un utilisateur donn\u00e9 et le contenu de la publication donn\u00e9e et de ce que nous pouvons en faire (ainsi que de la raison pour laquelle cela serait m\u00eame important).<\/p>\n<h2>Messages de la s\u00e9rie<\/h2>\n<ol>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-metadata-association\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Association de m\u00e9tadonn\u00e9es WordPress: comment faire<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/creating-wordpress-users\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Cr\u00e9ation par programmation d&rsquo;utilisateurs WordPress<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/types-de-publication-wordpress-une-abstraction-pour-les-entites\/\" title=\"Types de publication WordPress: une abstraction pour les entit\u00e9s\">Types de publication WordPress: une abstraction pour les entit\u00e9s<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/association-de-metadonnees-wordpress-entites-liees\/\" title=\"Association de m\u00e9tadonn\u00e9es WordPress\u00a0: entit\u00e9s li\u00e9es\">Association de m\u00e9tadonn\u00e9es WordPress\u00a0: entit\u00e9s li\u00e9es<\/a><\/li>\n<\/ol>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cependant, il ne s&rsquo;agit que du traitement de la cr\u00e9ation par programme d&rsquo;utilisateurs WordPress. En fait, il ne s&rsquo;agit que de cr\u00e9er un utilisateur.<\/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":[915,893,717,862],"tags":[1167],"class_list":["post-229027","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autre","category-code-2","category-developpeur","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=229027"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229027\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/220605"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}