{"id":234225,"date":"2023-02-16T18:25:00","date_gmt":"2023-02-16T15:25:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234225"},"modified":"2022-11-12T01:04:35","modified_gmt":"2022-11-11T22:04:35","slug":"tutoriel-comment-ajouter-une-action-groupee-personnalisee-dans-wordpress-admin","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/tutoriel-comment-ajouter-une-action-groupee-personnalisee-dans-wordpress-admin\/","title":{"rendered":"Tutoriel : Comment ajouter une action group\u00e9e personnalis\u00e9e dans WordPress Admin"},"content":{"rendered":"\n<p>Au-dessus de la plupart des tableaux d&rsquo;\u00e9l\u00e9ments dans l&rsquo;administration WordPress (par exemple, les publications, les pages, les commentaires, les plugins et les utilisateurs), vous trouverez la fonctionnalit\u00e9 de WordPress pour les actions en masse. Les actions group\u00e9es vous permettent de cocher plusieurs \u00e9l\u00e9ments, de choisir une action et d&rsquo;ex\u00e9cuter cette action pour tous les \u00e9l\u00e9ments \u00e0 la fois. Dans cet article, nous verrons comment ajouter nos propres actions group\u00e9es personnalis\u00e9es \u00e0 l&rsquo;administrateur WordPress.<\/p>\n<p>L&rsquo;ajout d&rsquo;une action group\u00e9e personnalis\u00e9e est devenu beaucoup plus facile dans les versions r\u00e9centes de WordPress (depuis la 4.7). Il y a un filtre pour les options disponibles dans la liste d\u00e9roulante\u00a0; un autre filtre pour ce qu&rsquo;il doit faire lorsque votre option est choisie, et un autre crochet pour afficher \u00e9ventuellement un avis d&rsquo;administration. Passons en revue chacun d&rsquo;entre eux.<\/p>\n<h2>Ajout d&rsquo;une action group\u00e9e personnalis\u00e9e dans la liste d\u00e9roulante<\/h2>\n<p>Commen\u00e7ons par ajouter notre choix group\u00e9 personnalis\u00e9 \u00e0 la liste d\u00e9roulante des actions group\u00e9es. Pour cela, nous utilisons le filtre <code>bulk_actions_&lt;screen&gt;<\/code>, que vous remplacez par l&rsquo;\u00e9cran d&rsquo;administration auquel vous souhaitez ajouter votre option. Voici un aper\u00e7u complet des options possibles pour l&rsquo;\u00e9cran\u00a0:<\/p>\n<ul>\n<li><code>bulk_actions-edit-post<\/code>: \u00e9cran d&rsquo;\u00e9dition de type de message &quot;post&quot;<\/li>\n<li><code>bulk_actions-edit-page<\/code>\u00a0: \u00e9cran d&rsquo;\u00e9dition de type de message &quot;page&quot;<\/li>\n<li><code>bulk_actions-edit-&lt;post-type-name&gt;<\/code>: \u00c9cran d&rsquo;\u00e9dition de type de message personnalis\u00e9<\/li>\n<li><code>bulk_actions-edit-&lt;custom-taxonomy&gt;<\/code>: \u00e9cran d&rsquo;\u00e9dition de taxonomie personnalis\u00e9e<\/li>\n<li><code>bulk_actions-edit-comments<\/code>: \u00c9cran de la liste des commentaires<\/li>\n<li><code>bulk_actions-plugins<\/code>: \u00c9cran de la liste des plugins<\/li>\n<li><code>bulk_actions-users<\/code>: \u00e9cran de la liste des utilisateurs<\/li>\n<li><code>bulk_actions-upload<\/code>\u00a0: Liste de la biblioth\u00e8que multim\u00e9dia (fonctionne uniquement en mode liste, pas en mode grille)<\/li>\n<\/ul>\n<p>Le filtre est appliqu\u00e9 sur un tableau avec des paires cl\u00e9-valeur\u00a0; o\u00f9 les cl\u00e9s sont une cl\u00e9 unique pour les actions et les valeurs sont l&rsquo;\u00e9tiquette qui appara\u00eet dans la liste d\u00e9roulante.<\/p>\n<p>Prenons un exemple. Je souhaite cr\u00e9er une action group\u00e9e pour d\u00e9finir les articles comme publi\u00e9s.<\/p>\n<pre><code>add_filter('bulk_actions-edit-post', function($bulk_actions) {\n    $bulk_actions['change-to-published'] = __('Change to published', 'txtdomain');\n    return $bulk_actions;\n});<\/code><\/pre>\n<p>Si vous enregistrez et actualisez l&rsquo;\u00e9cran d&rsquo;\u00e9dition des messages, vous devriez voir votre option dans la liste d\u00e9roulante.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153003-61e50168c2dcc.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-153003-61e50168c2dcc.png\" alt=\"Tutoriel : Comment ajouter une action group\u00e9e personnalis\u00e9e dans WordPress Admin\" ><\/a><\/p>\n<p>\u00c0 l&rsquo;heure actuelle, notre action group\u00e9e personnalis\u00e9e se d\u00e9roule parfaitement. C&rsquo;est la prochaine \u00e9tape.<\/p>\n<h2>Faire en sorte que notre action group\u00e9e personnalis\u00e9e fasse quelque chose<\/h2>\n<p>Afin de d\u00e9clencher quelque chose lors du choix de notre option nouvellement ajout\u00e9e dans le dropwon, nous nous accrochons au filtre <code>handle_bulk_actions-&lt;screen&gt;<\/code>. Reportez-vous \u00e0 l&rsquo;aper\u00e7u ci-dessus pour les valeurs d&rsquo;\u00e9cran possibles. \u00c9videmment, votre crochet de poign\u00e9e doit \u00eatre le m\u00eame \u00e9cran que l&rsquo;\u00e9cran dans lequel vous avez ajout\u00e9 l&rsquo;action en bloc lors de la premi\u00e8re \u00e9tape.<\/p>\n<p>Vous avez trois arguments possibles dans ce filtre. Le premier &#8211; celui que vous renvoyez &#8211; est en fait une URL vers laquelle WordPress doit rediriger apr\u00e8s avoir termin\u00e9 votre action group\u00e9e. Le deuxi\u00e8me argument est le nom de l&rsquo;action qui a \u00e9t\u00e9 choisie dans la liste d\u00e9roulante. Et le troisi\u00e8me est un tableau de tous les ID d&rsquo;\u00e9l\u00e9ments qui ont \u00e9t\u00e9 v\u00e9rifi\u00e9s pour l&rsquo;action en bloc. Ce sont les \u00e9l\u00e9ments sur lesquels nous devons appliquer notre action.<\/p>\n<pre><code>add_filter('handle_bulk_actions-edit-post', function($redirect_url, $action, $post_ids) {\n    if ($action == 'change-to-published') {\n        foreach ($post_ids as $post_id) {\n            wp_update_post([\n                'ID' =&gt; $post_id,\n                'post_status' =&gt; 'publish'\n            ]);\n        }\n        $redirect_url = add_query_arg('changed-to-published', count($post_ids), $redirect_url);\n    }\n    return $redirect_url;\n}, 10, 3);<\/code><\/pre>\n<p>Regardons ce que fait le code ci-dessus \u00e9tape par \u00e9tape. Nous devons d&rsquo;abord v\u00e9rifier si l&rsquo;action group\u00e9e effectu\u00e9e \u00e9tait bien notre action personnalis\u00e9e\u00a0; <code>change-to-published<\/code>. Et puis c&rsquo;est \u00e0 nous de faire ce qu&rsquo;on veut avec tous les identifiants.<\/p>\n<p>Le code ci-dessus parcourt tous les identifiants de publication et s&rsquo;ex\u00e9cute <code>wp_update_post()<\/code>sur chacun afin de changer leur statut de publication en publi\u00e9. (Si vous voulez que cela soit efficace, vous voudrez peut-\u00eatre envisager de ne mettre \u00e0 jour que ceux qui ne sont pas encore publi\u00e9s).<\/p>\n<p>Une fois que nous avons termin\u00e9 notre action sur les \u00e9l\u00e9ments s\u00e9lectionn\u00e9s, nous devons cr\u00e9er une URL vers laquelle rediriger une fois WordPress termin\u00e9. Nous ajoutons un argument personnalis\u00e9 \u00e0 l&rsquo;URL de redirection fournie. Ceci est facultatif mais n\u00e9cessaire si nous voulons afficher un avis d&rsquo;administration. Nous pouvons ajouter tout ce que vous voulez. Mais dans l&rsquo;exemple ci-dessus, nous ajoutons simplement un nouvel argument de requ\u00eate avec <code>add_query_arg()<\/code>le param\u00e8tre &lsquo; <code>changed-to-published<\/code>&lsquo; au nombre d&rsquo;ID de publication qui ont \u00e9t\u00e9 affect\u00e9s. Il s&rsquo;agit d&rsquo;informations utiles pour un avis.<\/p>\n<h2>Afficher un avis une fois notre action group\u00e9e personnalis\u00e9e termin\u00e9e<\/h2>\n<p>Si vous effectuez notre action group\u00e9e personnalis\u00e9e maintenant, vous remarquerez qu&rsquo;une fois que WordPress a termin\u00e9 l&rsquo;action group\u00e9e, il recharge la page avec l&rsquo;URL suivante\u00a0: &quot;wp-admin\/edit.php?changed-to-published=2&quot;. \u00ab\u00a02\u00a0\u00bb est le nombre de messages sur lesquels nous avons appliqu\u00e9 notre action. Cela nous permet d&rsquo;ajouter un avis d&rsquo;administration personnalis\u00e9 qui se d\u00e9clenche si \u00abmodifi\u00e9 en publi\u00e9\u00a0\u00bb est d\u00e9fini.<\/p>\n<p>Afin d&rsquo;afficher les avis d&rsquo;administration, nous pouvons utiliser l&rsquo;action <code>admin_notices<\/code>. Nous v\u00e9rifions la variable globale de PHP, <code>$_REQUEST<\/code>, qui est remplie avec les valeurs soumises par le formulaire si &lsquo; <code>changed-to-published<\/code>&lsquo; existe. Si c&rsquo;est le cas, cela signifie que notre action group\u00e9e personnalis\u00e9e vient d&rsquo;\u00eatre effectu\u00e9e. Nous afficherons alors du texte incluant le nombre de posts appliqu\u00e9s.<\/p>\n<pre><code>add_action('admin_notices', function() {\n    if (!empty($_REQUEST['changed-to-published'])) {\n        $num_changed = (int) $_REQUEST['changed-to-published'];\n        printf('&lt;div id=\"message\" class=\"updated notice is-dismissable\"&gt;&lt;p&gt;'. __('Published %d posts.', 'txtdomain'). '&lt;\/p&gt;&lt;\/div&gt;', $num_changed);\n    }\n});<\/code><\/pre>\n<p>Et c&rsquo;est tout!<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153003-61e50169c2e34.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-153003-61e50169c2e34.png\" alt=\"Tutoriel : Comment ajouter une action group\u00e9e personnalis\u00e9e dans WordPress Admin\" ><\/a><\/p>\n<h2>Autres utilisations de l&rsquo;action group\u00e9e personnalis\u00e9e<\/h2>\n<p>Gardez \u00e0 l&rsquo;esprit que dans le <code>handle_bulk_actions-&lt;screen&gt;<\/code>crochet, vous pouvez faire pratiquement tout ce que vous voulez sur les \u00e9l\u00e9ments s\u00e9lectionn\u00e9s. Vous pouvez mettre \u00e0 jour la m\u00e9ta de publication personnalis\u00e9e, modifier les r\u00f4les des utilisateurs, envoyer un e-mail ou publier une requ\u00eate HTTP \u00e0 une application tierce.<\/p>\n<p>Par exemple; si vous vouliez une action group\u00e9e pour mettre \u00e0 jour une m\u00e9ta de publication personnalis\u00e9e qui indique si les publications sont v\u00e9rifi\u00e9es ou non, en utilisant une action group\u00e9e personnalis\u00e9e avec la cl\u00e9 &lsquo; <code>mark-as-verified<\/code>&lsquo;\u00a0:<\/p>\n<pre><code>add_filter('handle_bulk_actions-edit-post', function($redirect_url, $action, $post_ids) {\n    if ($action == 'mark-as-verified') {\n        foreach ($post_ids as $post_id) {\n            update_post_meta($post_id, 'verified', '1');\n        }\n        $redirect_url = add_query_arg('mark-as-verified', count($post_ids), $redirect_url);\n    }\n    return $redirect_url;\n}, 10, 3);<\/code><\/pre>\n<p>Combinez ce qui pr\u00e9c\u00e8de avec une colonne personnalis\u00e9e qui affiche la valeur de &quot;v\u00e9rifi\u00e9&quot; dans les listes de messages &#8211; comme <a href=\"https:\/\/awhitepixel.com\/blog\/how-to-modify-or-add-custom-columns-to-post-list-in-wordpress-admin\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nous l&rsquo;avons fait dans ce post<\/a>, et cela devient tr\u00e8s utile.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153003-61e5016adc6a5.gif\" 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-153003-61e5016adc6a5.gif\" alt=\"Tutoriel : Comment ajouter une action group\u00e9e personnalis\u00e9e dans WordPress Admin\" ><\/a><\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans cet article, nous verrons comment ajouter une action group\u00e9e personnalis\u00e9e \u00e0 l&rsquo;administrateur WordPress &#8211; qui peut \u00eatre ajout\u00e9e \u00e0 la liste des articles, aux commentaires, aux utilisateurs et aux \u00e9crans de plugins,<\/p>\n","protected":false},"author":1,"featured_media":221177,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[915,893,893,717,717,915,1110,801,801,841,841,862,862],"tags":[1167],"class_list":["post-234225","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autre","category-code-2","category-developpeur","category-n-a","category-php-3","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234225","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=234225"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234225\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/221177"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=234225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=234225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=234225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}