So I am trying to get a custom bulk action to work in Wordpress 3.7.1 and so far no luck. The basis I am using is http://www.skyverge.com/blog/add-custom-bulk-action, and it goes wrong here:

    $wp_list_table = _get_list_table('WP_Posts_List_Table');
    $action = $wp_list_table->current_action();

The action itself is added with jQuery and does show. 

When I use a prompt to show the `$action` value it is always empty, which means the rest of the script does not fire. Any idea here? The entire code:

    <?php
    /*
    Plugin Name: FoxRunSoftware Custom Bulk Action Demo
    Plugin URI: http://www.foxrunsoftware.net/articles/wordpress/add-custom-bulk-action/
    Description: A working demonstration of a custom bulk action
    Author: Justin Stern
    Author URI: http://www.foxrunsoftware.net
    Version: 0.1

	Copyright: © 2012 Justin Stern (email : [email protected])
	License: GNU General Public License v3.0
	License URI: http://www.gnu.org/licenses/gpl-3.0.html
    */

    if (!class_exists('FRS_Custom_Bulk_Action')) {
     
    	class FRS_Custom_Bulk_Action {
    		
    		public function __construct() {
    			
    			if(is_admin()) {
    				// admin actions/filters
    				add_action('admin_footer-edit.php', array(&$this, 'custom_bulk_admin_footer'));
    				add_action('load-edit.php',         array(&$this,     'custom_bulk_action'));
				add_action('admin_notices',         array(&$this, 'custom_bulk_admin_notices'));
			}
		}
		
		
		/**
		 * Step 1: add the custom Bulk Action to the select menus
		 */
		function custom_bulk_admin_footer() {
			global $post_type;
			
			if($post_type == 'post') {
				?>
					<script type="text/javascript">
						jQuery(document).ready(function() {
							jQuery('<option>').val('export').text('<?php _e('Export')?>').appendTo("select[name='action']");
							jQuery('<option>').val('export').text('<?php _e('Export')?>').appendTo("select[name='action2']");
						});
					</script>
				<?php
	    	}
		}
		
		
		/**
		 * Step 2: handle the custom Bulk Action
		 * 
		 * Based on the post http://wordpress.stackexchange.com/questions/29822/custom-bulk-action
		 */
		function custom_bulk_action() {
			global $typenow;
			$post_type = $typenow;
			
			if($post_type == 'post') {
				
				// get the action
				$wp_list_table = _get_list_table('WP_Posts_List_Table');  // depending on your resource type this could be WP_Users_List_Table, WP_Comments_List_Table, etc
				$action = $wp_list_table->current_action();
				
				$allowed_actions = array("export");
				if(!in_array($action, $allowed_actions)) return;
				
				// security check
				check_admin_referer('bulk-posts');
				
				// make sure ids are submitted.  depending on the resource type, this may be 'media' or 'ids'
				if(isset($_REQUEST['post'])) {
					$post_ids = array_map('intval', $_REQUEST['post']);
				}
				
				if(empty($post_ids)) return;
				
				// this is based on wp-admin/edit.php
				$sendback = remove_query_arg( array('exported', 'untrashed', 'deleted', 'ids'), wp_get_referer() );
				if ( ! $sendback )
					$sendback = admin_url( "edit.php?post_type=$post_type" );
				
				$pagenum = $wp_list_table->get_pagenum();
				$sendback = add_query_arg( 'paged', $pagenum, $sendback );
				
				switch($action) {
					case 'export':
						
						// if we set up user permissions/capabilities, the code might look like:
						//if ( !current_user_can($post_type_object->cap->export_post, $post_id) )
						//	wp_die( __('You are not allowed to export this post.') );
						
						$exported = 0;
						foreach( $post_ids as $post_id ) {
							
							if ( !$this->perform_export($post_id) )
								wp_die( __('Error exporting post.') );
			
							$exported++;
						}
						
						$sendback = add_query_arg( array('exported' => $exported, 'ids' => join(',', $post_ids) ), $sendback );
					break;
					
					default: return;
				}
				
				$sendback = remove_query_arg( array('action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status',  'post', 'bulk_edit', 'post_view'), $sendback );
				
				wp_redirect($sendback);
				exit();
			}
		}
		
		
		/**
		 * Step 3: display an admin notice on the Posts page after exporting
		 */
		function custom_bulk_admin_notices() {
			global $post_type, $pagenow;
			
			if($pagenow == 'edit.php' && $post_type == 'post' && isset($_REQUEST['exported']) && (int) $_REQUEST['exported']) {
				$message = sprintf( _n( 'Post exported.', '%s posts exported.', $_REQUEST['exported'] ), number_format_i18n( $_REQUEST['exported'] ) );
				echo "<div class=\"updated\"><p>{$message}</p></div>";
			}
		}
		
		function perform_export($post_id) {
			// do whatever work needs to be done
			return true;
		}
	}
    }

    new FRS_Custom_Bulk_Action();