✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Handledning: Hur man lägger till en anpassad bulkåtgärd i WordPress Admin

5

Ovanför de flesta tabeller med element i WordPress admin (t.ex. inlägg, sidor, kommentarer, plugins och användare) hittar du WordPress funktionalitet för bulkåtgärder. Med bulkåtgärder kan du bocka av flera element, välja en åtgärd och få den åtgärden att utföras för alla element samtidigt. I det här inlägget kommer vi att titta på hur vi lägger till våra egna anpassade massåtgärder till WordPress admin.

Att lägga till en anpassad massåtgärd har blivit mycket enklare i de senaste versionerna av WordPress (sedan 4.7). Det finns ett filter för alternativen i rullgardinsmenyn; ett annat filter för vad det ska göra när ditt alternativ är valt, och en annan krok för att eventuellt visa ett adminmeddelande. Låt oss gå igenom var och en av dessa.

Lägger till en anpassad massåtgärd i rullgardinsmenyn

Låt oss börja med att lägga till vårt anpassade bulkval i rullgardinsmenyn för bulkåtgärder. För detta använder vi filtret bulk_actions_<screen>, där du ersätter med vilken adminskärm du vill att ditt alternativ ska läggas till. Här är en fullständig översikt över möjliga alternativ för skärmen:

  • bulk_actions-edit-post: Inläggstyp ‘post’ redigeringsskärm
  • bulk_actions-edit-page: Inläggstyp ‘sida’ redigeringsskärm
  • bulk_actions-edit-<post-type-name>: Redigeringsskärm för anpassad inläggstyp
  • bulk_actions-edit-<custom-taxonomy>: Redigeringsskärm för anpassad taxonomi
  • bulk_actions-edit-comments: Skärmen med kommentarslistan
  • bulk_actions-plugins: Skärmen med pluginlistan
  • bulk_actions-users: Skärmen med användarlista
  • bulk_actions-upload: Mediabibliotekslista (fungerar bara i listvy, inte rutnätsvy)

Filtret appliceras på en array med nyckel-värdepar; där nycklar är en unik nyckel för åtgärder och värden är etiketten som visas i rullgardinsmenyn.

Låt oss titta på ett exempel. Jag vill skapa en massåtgärd för att publicera inlägg.

add_filter('bulk_actions-edit-post', function($bulk_actions) { $bulk_actions['change-to-published'] = __('Change to published', 'txtdomain'); return $bulk_actions; });

Om du sparar och uppdaterar redigeringsskärmen för inlägg bör du se ditt alternativ i rullgardinsmenyn.

Handledning: Hur man lägger till en anpassad bulkåtgärd i WordPress Admin

Från och med just nu är vår anpassade bulk-åtgärd helt zippad. Det är nästa steg.

Att få vår anpassade massåtgärd att göra något

För att trigga något när vi väljer vårt nytillkomna alternativ i dropwon hakar vi på filtret handle_bulk_actions-<screen>. Se översikten ovan för möjliga skärmvärden. Självklart ska din handtagskrok vara samma skärm som skärmen där du lade till bulkåtgärden i det första steget.

Du har tre möjliga argument i detta filter. Den första – den du returnerar – är faktiskt en webbadress som WordPress ska omdirigera till efter att den är klar med din massåtgärd. Det andra argumentet är namnet på åtgärden som valdes i rullgardinsmenyn. Och för det tredje är en uppsättning av alla element-ID:n som kontrollerades för bulkåtgärden. Det här är de element vi behöver tillämpa vår handling på.

Låt oss titta på vad ovanstående kod gör steg för steg. Först måste vi kontrollera om den utförda bulkåtgärden verkligen var vår anpassade åtgärd; change-to-published. Och sedan är det upp till oss att göra vad vi vill med alla ID:n.

Koden ovan går igenom alla inläggs-ID:n och utför wp_update_post()på var och en för att ändra deras inläggsstatus till publicerad. (Om du vill att detta ska vara effektivt kan du överväga att bara uppdatera de som faktiskt inte redan är publicerade).

När vi är klara med att göra vår åtgärd på de valda elementen måste vi bygga en URL att omdirigera till efter att WordPress är klart. Vi lägger till ett anpassat argument till den angivna omdirigeringsadressen. Detta är valfritt men nödvändigt om vi vill visa ett adminmeddelande. Vi kan lägga till vad du vill. Men i exemplet ovan lägger vi helt enkelt till en ny fråge-arg med add_query_arg()inställningen ‘ changed-to-published‘ till antalet inläggs-ID:n som påverkades. Detta är användbar information för ett meddelande.

Visa ett meddelande efter att vår anpassade massåtgärd är gjord

Om du utför vår anpassade massåtgärd nu kommer du att märka att efter att WordPress har slutfört massåtgärden laddar den om sidan med följande i URL:en: "wp-admin/edit.php?changed-to-published=2". "2" är antalet inlägg som vi tillämpade vår åtgärd på. Detta gör att vi kan lägga till ett anpassat adminmeddelande som utlöses om "ändrat-till-publicerat" är inställt.

För att visa adminmeddelanden kan vi använda åtgärden admin_notices. Vi kontrollerar PHP:s globala variabel, $_REQUEST, som är fyllda med formulärinlämnade värden om ‘ changed-to-published‘ finns. Om den gör det betyder det att vår anpassade massåtgärd just utfördes. Vi kommer då att visa lite text inklusive antalet ansökta inlägg.

Och det är allt!

Handledning: Hur man lägger till en anpassad bulkåtgärd i WordPress Admin

Andra användningsområden för anpassade bulkåtgärder

Tänk på att i handle_bulk_actions-<screen>kroken kan du göra i princip vad du vill på de valda elementen. Du kan uppdatera anpassad inläggsmeta, ändra roller på användare, skicka ett e-postmeddelande eller skicka en HTTP-förfrågan till någon tredjepartsapp.

Till exempel; om du ville ha en massåtgärd för att uppdatera en anpassad inläggsmeta som informerar om inlägg är verifierade eller inte, med hjälp av en anpassad massåtgärd med nyckeln ‘ mark-as-verified‘:

add_filter('handle_bulk_actions-edit-post', function($redirect_url, $action, $post_ids) { if ($action == 'mark-as-verified') { foreach ($post_ids as $post_id) { update_post_meta($post_id, 'verified', '1'); } $redirect_url = add_query_arg('mark-as-verified', count($post_ids), $redirect_url); } return $redirect_url; }, 10, 3);

Kombinera ovanstående med en anpassad kolumn som visar värdet av "verifierad" i inläggslistor – som vi gjorde i det här inlägget, och det blir extra användbart.

Handledning: Hur man lägger till en anpassad bulkåtgärd i WordPress Admin

Inspelningskälla: awhitepixel.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer