Index: wp-admin/users.php
===================================================================
--- wp-admin/users.php	(revision 14446)
+++ wp-admin/users.php	(working copy)
@@ -348,8 +348,18 @@
 if ( ! empty($messages) ) {
 	foreach ( $messages as $msg )
 		echo $msg;
-} ?>
+}
 
+// Setup Bulk Actions
+$bulk_actions['-1'] = __('Bulk Actions');
+if ( !is_multisite() && current_user_can('delete_users') )
+	$bulk_actions['delete'] = __('Delete');
+else
+	$bulk_actions['remove'] = __('Remove');
+
+$bulk_actions = apply_filters( 'bulk_actions-users', $bulk_actions );
+?>
+
 <div class="wrap">
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title ); if ( current_user_can( 'create_users' ) ) { ?>  <a href="user-new.php" class="button add-new-h2"><?php echo esc_html_x('Add New', 'user'); ?></a><?php }
@@ -410,12 +420,7 @@
 
 <div class="alignleft actions">
 <select name="action">
-<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
-<?php if ( !is_multisite() && current_user_can('delete_users') ) { ?>
-<option value="delete"><?php _e('Delete'); ?></option>
-<?php } else { ?>
-<option value="remove"><?php _e('Remove'); ?></option>
-<?php } ?>
+	<?php wp_list_bulk_actions( $bulk_actions ); ?>
 </select>
 <input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
 <label class="screen-reader-text" for="new_role"><?php _e('Change role to&hellip;') ?></label><select name="new_role" id="new_role"><option value=''><?php _e('Change role to&hellip;') ?></option><?php wp_dropdown_roles(); ?></select>
@@ -483,12 +488,8 @@
 
 <div class="alignleft actions">
 <select name="action2">
-<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
-<?php if ( !is_multisite() && current_user_can('delete_users') ) { ?>
-<option value="delete"><?php _e('Delete'); ?></option>
-<?php } else { ?>
-<option value="remove"><?php _e('Remove'); ?></option>
-<?php } ?></select>
+	<?php wp_list_bulk_actions( $bulk_actions ); ?>
+</select>
 <input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
 </div>
 
Index: wp-admin/edit-comments.php
===================================================================
--- wp-admin/edit-comments.php	(revision 14446)
+++ wp-admin/edit-comments.php	(working copy)
@@ -116,8 +116,28 @@
 $comment_type = !empty($_GET['comment_type']) ? esc_attr($_GET['comment_type']) : '';
 
 $search_dirty = ( isset($_GET['s']) ) ? $_GET['s'] : '';
-$search = esc_attr( $search_dirty ); ?>
+$search = esc_attr( $search_dirty );
 
+// Setup Bulk Actions
+$bulk_actions['-1'] = __('Bulk Actions');
+if ( 'all' == $comment_status || 'approved' == $comment_status )
+	$bulk_actions['unapprove'] = __('Unapprove');
+if ( 'all' == $comment_status || 'moderated' == $comment_status || 'spam' == $comment_status )
+	$bulk_actions['approve'] = __('Approve');
+if ( 'all' == $comment_status || 'approved' == $comment_status || 'moderated' == $comment_status )
+	$bulk_actions['spam'] = _x('Mark as Spam', 'comment');
+if ( 'trash' == $comment_status )
+	$bulk_actions['untrash'] = __('Restore');
+elseif ( 'spam' == $comment_status )
+	$bulk_actions['unspam'] = _x('Not Spam', 'comment');
+if ( 'trash' == $comment_status || 'spam' == $comment_status || !EMPTY_TRASH_DAYS )
+	$bulk_actions['delete'] = __('Delete Permanently');
+else
+	$bulk_actions['trash'] = __('Move to Trash');
+
+$bulk_actions = apply_filters( 'bulk_actions-comments', $bulk_actions );
+?>
+
 <div class="wrap">
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title );
@@ -308,26 +328,7 @@
 
 <div class="alignleft actions">
 <select name="action">
-<option value="-1" selected="selected"><?php _e('Bulk Actions') ?></option>
-<?php if ( 'all' == $comment_status || 'approved' == $comment_status ): ?>
-<option value="unapprove"><?php _e('Unapprove'); ?></option>
-<?php endif; ?>
-<?php if ( 'all' == $comment_status || 'moderated' == $comment_status || 'spam' == $comment_status ): ?>
-<option value="approve"><?php _e('Approve'); ?></option>
-<?php endif; ?>
-<?php if ( 'all' == $comment_status || 'approved' == $comment_status || 'moderated' == $comment_status ): ?>
-<option value="spam"><?php echo _x('Mark as Spam', 'comment'); ?></option>
-<?php endif; ?>
-<?php if ( 'trash' == $comment_status ): ?>
-<option value="untrash"><?php _e('Restore'); ?></option>
-<?php elseif ( 'spam' == $comment_status ): ?>
-<option value="unspam"><?php echo _x('Not Spam', 'comment'); ?></option>
-<?php endif; ?>
-<?php if ( 'trash' == $comment_status || 'spam' == $comment_status || !EMPTY_TRASH_DAYS ): ?>
-<option value="delete"><?php _e('Delete Permanently'); ?></option>
-<?php else: ?>
-<option value="trash"><?php _e('Move to Trash'); ?></option>
-<?php endif; ?>
+	<?php wp_list_bulk_actions( $bulk_actions ); ?>
 </select>
 <input type="submit" name="doaction" id="doaction" value="<?php esc_attr_e('Apply'); ?>" class="button-secondary apply" />
 <?php wp_nonce_field('bulk-comments'); ?>
@@ -405,26 +406,7 @@
 
 <div class="alignleft actions">
 <select name="action2">
-<option value="-1" selected="selected"><?php _e('Bulk Actions') ?></option>
-<?php if ( 'all' == $comment_status || 'approved' == $comment_status ): ?>
-<option value="unapprove"><?php _e('Unapprove'); ?></option>
-<?php endif; ?>
-<?php if ( 'all' == $comment_status || 'moderated' == $comment_status || 'spam' == $comment_status ): ?>
-<option value="approve"><?php _e('Approve'); ?></option>
-<?php endif; ?>
-<?php if ( 'all' == $comment_status || 'approved' == $comment_status || 'moderated' == $comment_status ): ?>
-<option value="spam"><?php echo _x('Mark as Spam', 'comment'); ?></option>
-<?php endif; ?>
-<?php if ( 'trash' == $comment_status ): ?>
-<option value="untrash"><?php _e('Restore'); ?></option>
-<?php endif; ?>
-<?php if ( 'trash' == $comment_status || 'spam' == $comment_status || !EMPTY_TRASH_DAYS ): ?>
-<option value="delete"><?php _e('Delete Permanently'); ?></option>
-<?php elseif ( 'spam' == $comment_status ): ?>
-<option value="unspam"><?php echo _x('Not Spam', 'comment'); ?></option>
-<?php else: ?>
-<option value="trash"><?php _e('Move to Trash'); ?></option>
-<?php endif; ?>
+	<?php wp_list_bulk_actions( $bulk_actions ); ?>
 </select>
 <input type="submit" name="doaction2" id="doaction2" value="<?php esc_attr_e('Apply'); ?>" class="button-secondary apply" />
 
Index: wp-admin/includes/misc.php
===================================================================
--- wp-admin/includes/misc.php	(revision 14446)
+++ wp-admin/includes/misc.php	(working copy)
@@ -682,4 +682,21 @@
 </fieldset>
 <?php
 }
-?>
+
+/**
+ * Outputs a list of bulk actions.
+ *
+ * @since 3.0.0
+ **/
+function wp_list_bulk_actions( $bulk_actions = array() ) {
+	if ( empty($bulk_actions) )
+		return false;
+	
+	$actions = array();
+	foreach ( (array) $bulk_actions as $value => $label ) {
+		$actions[$value] = "<option value=\"{$value}\">{$label}</option>";
+	}
+	
+	echo join( "\n", apply_filters( 'wp_list_bulk_actions', $actions ) );
+}
+?>
\ No newline at end of file
Index: wp-admin/edit-tags.php
===================================================================
--- wp-admin/edit-tags.php	(revision 14446)
+++ wp-admin/edit-tags.php	(working copy)
@@ -173,6 +173,13 @@
 $messages[5] = __('Item not updated.');
 $messages[6] = __('Items deleted.');
 
+// Setup Bulk Actions 
+$bulk_actions = array(
+	'-1' => __('Bulk Actions'),
+	'delete' => __('Delete'),
+);
+
+$bulk_actions = apply_filters( "bulk_actions-$taxonomy", $bulk_actions );
 ?>
 
 <div class="wrap nosubsub">
@@ -248,8 +255,7 @@
 
 <div class="alignleft actions">
 <select name="action">
-<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
+	<?php wp_list_bulk_actions( $bulk_actions ); ?>
 </select>
 <input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
 <?php wp_nonce_field('bulk-tags'); ?>
@@ -286,8 +292,7 @@
 
 <div class="alignleft actions">
 <select name="action2">
-<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
+	<?php wp_list_bulk_actions( $bulk_actions ); ?>
 </select>
 <input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
 </div>
Index: wp-admin/ms-sites.php
===================================================================
--- wp-admin/ms-sites.php	(revision 14446)
+++ wp-admin/ms-sites.php	(working copy)
@@ -71,6 +71,16 @@
 	<?php
 }
 
+// Setup Bulk Actions
+$bulk_actions = array(
+	'-1' => __('Bulk Actions'),
+	'delete' => __('Delete'),
+	'spam' => _x( 'Mark as Spam', 'site' ),
+	'notspam' => _x( 'Not Spam', 'site' ),
+);
+
+$bulk_actions = apply_filters( 'bulk_actions-ms_sites', $bulk_actions );
+
 $action = isset( $_GET['action'] ) ? $_GET['action'] : 'list';
 
 switch ( $action ) {
@@ -412,10 +422,7 @@
 		<div class="tablenav">
 		<div class="alignleft actions">
 			<select name="action">
-				<option value="-1" selected="selected"><?php _e( 'Bulk Actions' ); ?></option>
-				<option value="delete"><?php _e( 'Delete' ); ?></option>
-				<option value="spam"><?php echo _x( 'Mark as Spam', 'site' ); ?></option>
-				<option value="notspam"><?php echo _x( 'Not Spam', 'site' ); ?></option>
+				<?php wp_list_bulk_actions( $bulk_actions ); ?>
 			</select>
 			<input type="submit" value="<?php esc_attr_e( 'Apply' ); ?>" name="doaction" id="doaction" class="button-secondary action" />
 			<?php wp_nonce_field( 'bulk-ms-sites' ); ?>
@@ -663,10 +670,7 @@
 
 			<div class="alignleft actions">
 			<select name="action2">
-				<option value="-1" selected="selected"><?php _e( 'Bulk Actions' ); ?></option>
-				<option value="delete"><?php _e( 'Delete' ); ?></option>
-				<option value="spam"><?php echo _x( 'Mark as Spam', 'site' ); ?></option>
-				<option value="notspam"><?php echo _x( 'Not Spam', 'site' ); ?></option>
+				<?php wp_list_bulk_actions( $bulk_actions ); ?>
 			</select>
 			<input type="submit" value="<?php esc_attr_e( 'Apply' ); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
 			</div>
Index: wp-admin/edit.php
===================================================================
--- wp-admin/edit.php	(revision 14446)
+++ wp-admin/edit.php	(working copy)
@@ -161,8 +161,25 @@
 if ( empty($_GET['mode']) )
 	$mode = 'list';
 else
-	$mode = esc_attr($_GET['mode']); ?>
+	$mode = esc_attr($_GET['mode']);
 
+$is_trash = isset($_GET['post_status']) && $_GET['post_status'] == 'trash';
+
+// Setup Bulk Actions 
+$bulk_actions['-1'] = __('Bulk Actions');
+if ( $is_trash )
+	$bulk_actions['untrash'] = __('Restore');
+else
+	$bulk_actions['edit'] = __('Edit');
+
+if ( $is_trash || !EMPTY_TRASH_DAYS )
+	$bulk_actions['delete'] = __('Delete Permanently');
+else
+	$bulk_actions['trash'] = __('Move to Trash');
+
+$bulk_actions = apply_filters( "bulk_actions-$post_type", $bulk_actions );
+?>
+
 <div class="wrap">
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title ); ?> <a href="<?php echo $post_new_file ?>" class="button add-new-h2"><?php echo esc_html_x('Add New', 'post'); ?></a> <?php
@@ -290,16 +307,7 @@
 
 <div class="alignleft actions">
 <select name="action">
-<option value="-1" selected="selected"><?php _e('Bulk Actions'); ?></option>
-<?php if ( $is_trash ) { ?>
-<option value="untrash"><?php _e('Restore'); ?></option>
-<?php } else { ?>
-<option value="edit"><?php _e('Edit'); ?></option>
-<?php } if ( $is_trash || !EMPTY_TRASH_DAYS ) { ?>
-<option value="delete"><?php _e('Delete Permanently'); ?></option>
-<?php } else { ?>
-<option value="trash"><?php _e('Move to Trash'); ?></option>
-<?php } ?>
+	<?php wp_list_bulk_actions( $bulk_actions ); ?>
 </select>
 <input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
 <?php wp_nonce_field('bulk-posts'); ?>
@@ -386,16 +394,7 @@
 
 <div class="alignleft actions">
 <select name="action2">
-<option value="-1" selected="selected"><?php _e('Bulk Actions'); ?></option>
-<?php if ( $is_trash ) { ?>
-<option value="untrash"><?php _e('Restore'); ?></option>
-<?php } else { ?>
-<option value="edit"><?php _e('Edit'); ?></option>
-<?php } if ( $is_trash || !EMPTY_TRASH_DAYS ) { ?>
-<option value="delete"><?php _e('Delete Permanently'); ?></option>
-<?php } else { ?>
-<option value="trash"><?php _e('Move to Trash'); ?></option>
-<?php } ?>
+	<?php wp_list_bulk_actions( $bulk_actions ); ?>
 </select>
 <input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
 <?php if ( $is_trash && current_user_can($post_type_object->edit_others_cap) ) { ?>
Index: wp-admin/link-manager.php
===================================================================
--- wp-admin/link-manager.php	(revision 14446)
+++ wp-admin/link-manager.php	(working copy)
@@ -68,8 +68,16 @@
 	default :
 		$sqlorderby = 'name';
 		break;
-} ?>
+}
 
+$bulk_actions = array(
+	'-1' = __('Bulk Actions'),
+	'delete' = __('Delete'),
+);
+
+$bulk_actions = apply_filters( 'bulk_actions-links', $bulk_actions );
+?>
+
 <div class="wrap nosubsub">
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title ); ?> <a href="link-add.php" class="button add-new-h2"><?php echo esc_html_x('Add New', 'link'); ?></a> <?php
@@ -111,8 +119,7 @@
 
 <div class="alignleft actions">
 <select name="action">
-<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
+	<?php wp_list_bulk_actions( $bulk_actions ); ?>
 </select>
 <input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
 
@@ -258,8 +265,7 @@
 
 <div class="alignleft actions">
 <select name="action2">
-<option value="" selected="selected"><?php _e('Bulk Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
+	<?php wp_list_bulk_actions( $bulk_actions ); ?>
 </select>
 <input type="submit" value="<?php esc_attr_e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
 </div>
