{"id":233558,"date":"2023-02-16T18:42:00","date_gmt":"2023-02-16T15:42:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233558"},"modified":"2022-11-11T00:20:54","modified_gmt":"2022-11-10T21:20:54","slug":"tutorial-come-aggiungere-unazione-collettiva-personalizzata-nellamministratore-di-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/tutorial-come-aggiungere-unazione-collettiva-personalizzata-nellamministratore-di-wordpress\/","title":{"rendered":"Tutorial: come aggiungere un&#8217;azione collettiva personalizzata nell&#8217;amministratore di WordPress"},"content":{"rendered":"\n<p>Sopra la maggior parte delle tabelle di elementi nell&#8217;amministratore di WordPress (ad esempio post, pagine, commenti, plug-in e utenti) troverai la funzionalit\u00e0 di WordPress per le azioni collettive. Le azioni in blocco ti consentono di selezionare pi\u00f9 elementi, scegliere un&#8217;azione e fare in modo che quell&#8217;azione venga eseguita per tutti gli elementi contemporaneamente. In questo post vedremo come aggiungere le nostre azioni in blocco personalizzate all&#8217;amministratore di WordPress.<\/p>\n<p>L&#8217;aggiunta di un&#8217;azione in blocco personalizzata \u00e8 diventata molto pi\u00f9 semplice nelle versioni recenti di WordPress (dalla 4.7). C&#8217;\u00e8 un filtro per le opzioni disponibili nel menu a discesa; un altro filtro per ci\u00f2 che dovrebbe fare quando viene scelta l&#8217;opzione e un altro hook per mostrare facoltativamente un avviso di amministratore. Esaminiamo ciascuno di questi.<\/p>\n<h2>Aggiunta di un&#8217;azione collettiva personalizzata nel menu a discesa<\/h2>\n<p>Iniziamo con l&#8217;aggiunta della nostra scelta collettiva personalizzata al menu a discesa delle azioni in blocco. Per questo utilizziamo il filtro <code>bulk_actions_&lt;screen&gt;<\/code>, in cui lo sostituisci con qualsiasi schermata di amministrazione a cui desideri aggiungere la tua opzione. Ecco una panoramica completa delle possibili opzioni per lo schermo:<\/p>\n<ul>\n<li><code>bulk_actions-edit-post<\/code>: Schermata di modifica &#8216;post&#8217; del tipo di post<\/li>\n<li><code>bulk_actions-edit-page<\/code>: Schermata di modifica della &quot;pagina&quot; del tipo di post<\/li>\n<li><code>bulk_actions-edit-&lt;post-type-name&gt;<\/code>: Schermata di modifica del tipo di post personalizzato<\/li>\n<li><code>bulk_actions-edit-&lt;custom-taxonomy&gt;<\/code>: Schermata di modifica della tassonomia personalizzata<\/li>\n<li><code>bulk_actions-edit-comments<\/code>: Schermata dell&#8217;elenco dei commenti<\/li>\n<li><code>bulk_actions-plugins<\/code>: schermata dell&#8217;elenco dei plugin<\/li>\n<li><code>bulk_actions-users<\/code>: schermata dell&#8217;elenco utenti<\/li>\n<li><code>bulk_actions-upload<\/code>: Elenco della libreria multimediale (funziona solo nella visualizzazione elenco, non nella visualizzazione griglia)<\/li>\n<\/ul>\n<p>Il filtro viene applicato a un array con coppie chiave-valore; dove le chiavi sono una chiave univoca per le azioni e i valori sono l&#8217;etichetta che appare nel menu a discesa.<\/p>\n<p>Diamo un&#8217;occhiata a un esempio. Voglio creare un&#8217;azione collettiva per impostare i post da pubblicare.<\/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>Se salvi e aggiorni la schermata di modifica dei post, dovresti vedere la tua opzione nel menu a discesa.<\/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=\"Tutorial: come aggiungere un&#039;azione collettiva personalizzata nell&#039;amministratore di WordPress\" ><\/a><\/p>\n<p>A partire da ora la nostra azione in blocco personalizzata sta facendo assolutamente zip. Questo \u00e8 il prossimo passo.<\/p>\n<h2>Fare in modo che la nostra azione collettiva personalizzata faccia qualcosa<\/h2>\n<p>Per attivare qualcosa quando scegliamo la nostra nuova opzione aggiunta nel dropwon, ci colleghiamo al filtro <code>handle_bulk_actions-&lt;screen&gt;<\/code>. Fare riferimento alla panoramica sopra per i possibili valori dello schermo. Ovviamente il tuo handle hook dovrebbe essere la stessa schermata in cui hai aggiunto l&#8217;azione in blocco nel primo passaggio.<\/p>\n<p>Hai tre possibili argomenti in questo filtro. Il primo, quello che restituisci, \u00e8 in realt\u00e0 un URL a cui WordPress dovrebbe reindirizzare al termine dell&#8217;azione collettiva. Il secondo argomento \u00e8 il nome dell&#8217;azione che \u00e8 stata scelta nel menu a discesa. E il terzo \u00e8 un array di tutti gli ID elemento che sono stati controllati per l&#8217;azione in blocco. Questi sono gli elementi su cui dobbiamo applicare la nostra azione.<\/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>Diamo un&#8217;occhiata a cosa fa il codice sopra passo dopo passo. Per prima cosa dobbiamo verificare se l&#8217;azione in blocco eseguita \u00e8 stata effettivamente la nostra azione personalizzata; <code>change-to-published<\/code>. E poi sta a noi fare quello che vogliamo con tutti gli ID.<\/p>\n<p>Il codice sopra scorre tutti gli ID post e funziona <code>wp_update_post()<\/code>su ciascuno per modificare lo stato del post in pubblicato. (Se vuoi che questo sia efficiente potresti prendere in considerazione l&#8217;aggiornamento solo di quelli che in effetti non sono gi\u00e0 stati pubblicati).<\/p>\n<p>Dopo aver terminato di eseguire la nostra azione sugli elementi selezionati, dobbiamo creare un URL a cui reindirizzare al termine di WordPress. Aggiungiamo un argomento personalizzato all&#8217;URL di reindirizzamento fornito. Questo \u00e8 facoltativo ma necessario se vogliamo mostrare un avviso di amministratore. Possiamo aggiungere tutto quello che vuoi. Ma nell&#8217;esempio sopra stiamo semplicemente aggiungendo una nuova query arg con <code>add_query_arg()<\/code>l&#8217;impostazione &#8216; <code>changed-to-published<\/code>&#8216; al numero di ID post interessati. Questa \u00e8 un&#8217;informazione utile per un avviso.<\/p>\n<h2>Mostra un avviso al termine della nostra azione collettiva personalizzata<\/h2>\n<p>Se esegui ora la nostra azione in blocco personalizzata, noterai che dopo che WordPress ha completato l&#8217;azione in blocco, ricarica la pagina con quanto segue nell&#8217;URL: &quot;wp-admin\/edit.php?changed-to-published=2&quot;. &quot;2&quot; \u00e8 il numero di post su cui abbiamo applicato la nostra azione. Ci\u00f2 ci consente di aggiungere un avviso dell&#8217;amministratore personalizzato che si attiva se \u00e8 impostato &quot;modificato in pubblicato&quot;.<\/p>\n<p>Per mostrare gli avvisi dell&#8217;amministratore, possiamo utilizzare l&#8217;azione <code>admin_notices<\/code>. Controlliamo la variabile globale di PHP, <code>$_REQUEST<\/code>, che \u00e8 popolata con i valori inviati dal modulo se &#8216; <code>changed-to-published<\/code>&#8216; esiste. In tal caso, significa che la nostra azione collettiva personalizzata \u00e8 stata appena eseguita. Visualizzeremo quindi del testo incluso il numero di post applicati.<\/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>E questo \u00e8 tutto!<\/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=\"Tutorial: come aggiungere un&#039;azione collettiva personalizzata nell&#039;amministratore di WordPress\" ><\/a><\/p>\n<h2>Altri usi dell&#8217;azione collettiva personalizzata<\/h2>\n<p>Tieni presente che nel <code>handle_bulk_actions-&lt;screen&gt;<\/code>gancio puoi fare praticamente tutto ci\u00f2 che vuoi sugli elementi selezionati. Puoi aggiornare il meta post personalizzato, modificare i ruoli sugli utenti, inviare un&#8217;e-mail o pubblicare una richiesta HTTP su qualche app di terze parti.<\/p>\n<p>Per esempio; se desideri un&#8217;azione in blocco per aggiornare un meta post personalizzato che informa se i post sono verificati o meno, utilizzando un&#8217;azione in blocco personalizzata con la chiave &#8216; <code>mark-as-verified<\/code>&#8216;:<\/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>Combina quanto sopra con una colonna personalizzata che mostra il valore di &quot;verificato&quot; negli elenchi di post, come <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\">abbiamo fatto in questo post<\/a>, e diventa molto 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=\"Tutorial: come aggiungere un&#039;azione collettiva personalizzata nell&#039;amministratore di WordPress\" ><\/a><\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questo post vedremo come aggiungere un&#8217;azione collettiva personalizzata all&#8217;amministratore di WordPress, che pu\u00f2 essere aggiunta all&#8217;elenco dei post, ai commenti, agli utenti e alle schermate dei plug-in,<\/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":[918,896,896,720,918,1110,804,804,720,844,844,865,865],"tags":[1168],"class_list":{"0":"post-233558","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-altro","8":"category-codice","10":"category-sviluppatore","12":"category-n-a","13":"category-php-6","16":"category-tutorial","18":"category-wordpress-6","20":"tag-affiai-it"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233558","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=233558"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233558\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/221177"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=233558"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=233558"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=233558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}