| 1 | <?php
|
|---|
| 2 | /*
|
|---|
| 3 | Plugin Name: Bulk Actions Test
|
|---|
| 4 | Plugin URI:
|
|---|
| 5 | Description: Tests bulk actions for all screens
|
|---|
| 6 | Author: Matt van Andel
|
|---|
| 7 | Version: 1.0
|
|---|
| 8 | Author URI:
|
|---|
| 9 | */
|
|---|
| 10 |
|
|---|
| 11 | add_filter( 'pre_option_link_manager_enabled', '__return_true' );
|
|---|
| 12 |
|
|---|
| 13 | add_action( 'current_screen', function () {
|
|---|
| 14 |
|
|---|
| 15 | // The query arg needs to be removed from the REQUEST_URI so the message doesn't
|
|---|
| 16 | // persist, see wp-admin/edit.php
|
|---|
| 17 | $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'tstbkact' ), $_SERVER['REQUEST_URI'] );
|
|---|
| 18 |
|
|---|
| 19 | // Add new bulk action to all screens
|
|---|
| 20 | add_filter( 'bulk_actions-' . get_current_screen()->id, 'bulkactiontest_add_bulk_action' );
|
|---|
| 21 |
|
|---|
| 22 | // Add new bulk action handler to all screens
|
|---|
| 23 | add_filter( 'handle_bulk_actions-' . get_current_screen()->id, 'bulkactiontest_handle_bulk_action', 10, 3 );
|
|---|
| 24 |
|
|---|
| 25 | // Display notice after bulk action is handled
|
|---|
| 26 | add_action( 'admin_notices', 'bulkactiontest_admin_notice' );
|
|---|
| 27 | add_action( 'network_admin_notices', 'bulkactiontest_admin_notice' );
|
|---|
| 28 | } );
|
|---|
| 29 |
|
|---|
| 30 |
|
|---|
| 31 | function bulkactiontest_add_bulk_action( $actions ) {
|
|---|
| 32 | $actions['tstbkact'] = 'Test Bulk Action';
|
|---|
| 33 |
|
|---|
| 34 | return $actions;
|
|---|
| 35 | }
|
|---|
| 36 |
|
|---|
| 37 | function bulkactiontest_handle_bulk_action( $sendback, $action = false, $items = false, $site_id = false ) {
|
|---|
| 38 | if ( $action === 'tstbkact' ) {
|
|---|
| 39 | $sendback = add_query_arg( 'tstbkact', count( $items ), $sendback );
|
|---|
| 40 | return $sendback;
|
|---|
| 41 | }
|
|---|
| 42 |
|
|---|
| 43 | return $sendback;
|
|---|
| 44 | }
|
|---|
| 45 |
|
|---|
| 46 | function bulkactiontest_admin_notice() {
|
|---|
| 47 | $current_screen = get_current_screen();
|
|---|
| 48 |
|
|---|
| 49 | if ( isset( $_REQUEST['tstbkact'] ) ) {
|
|---|
| 50 | printf( '<div id="message" class="updated fade"><p>Test bulk action caught for %s items on %s!</p></div>', $_REQUEST['tstbkact'], $current_screen->id );
|
|---|
| 51 | }
|
|---|
| 52 | }
|
|---|
| 53 |
|
|---|
| 54 | function bulkactiontest_add_removable_query_args($removable_query_args) {
|
|---|
| 55 | $removable_query_args[] = 'tstbkact';
|
|---|
| 56 | return $removable_query_args;
|
|---|
| 57 | }
|
|---|
| 58 | add_filter( 'removable_query_args', 'bulkactiontest_add_removable_query_args', 10, 1 );
|
|---|