protected function get_bulk_actions() {
$actions = array();
+ $post_type_obj = get_post_type_object( $this->screen->post_type );
- if ( $this->is_trash )
+ if ( $this->is_trash ) {
$actions['untrash'] = __( 'Restore' );
- else
+ } else {
$actions['edit'] = __( 'Edit' );
+ }
- if ( $this->is_trash || !EMPTY_TRASH_DAYS )
- $actions['delete'] = __( 'Delete Permanently' );
- else
- $actions['trash'] = __( 'Move to Trash' );
+ if ( current_user_can( $post_type_obj->cap->delete_posts ) ) {
+ if ( $this->is_trash || ! EMPTY_TRASH_DAYS ) {
+ $actions['delete'] = __( 'Delete Permanently' );
+ } else {
+ $actions['trash'] = __( 'Move to Trash' );
+ }
+ }
return $actions;
}
+ /**
+ * @global int $cat
+ * @param string $which
+ */
protected function extra_tablenav( $which ) {
global $cat;
?>
if ( is_object_in_taxonomy( $this->screen->post_type, 'category' ) ) {
$dropdown_options = array(
- 'show_option_all' => __( 'View all categories' ),
+ 'show_option_all' => __( 'All categories' ),
'hide_empty' => 0,
'hierarchical' => 1,
'show_count' => 0,
'orderby' => 'name',
'selected' => $cat
);
+
+ echo '<label class="screen-reader-text" for="cat">' . __( 'Filter by category' ) . '</label>';
wp_dropdown_categories( $dropdown_options );
}
return parent::current_action();
}
+ /**
+ * @global string $mode
+ * @param string $which
+ */
protected function pagination( $which ) {
global $mode;
/**
* Filter the taxonomy columns in the Posts list table.
*
- * The dynamic portion of the hook name, $post_type, refers to the post
+ * The dynamic portion of the hook name, `$post_type`, refers to the post
* type slug.
*
* @since 3.5.0
/**
* Filter the columns displayed in the Posts list table for a specific post type.
*
- * The dynamic portion of the hook name, $post_type, refers to the post type slug.
+ * The dynamic portion of the hook name, `$post_type`, refers to the post type slug.
*
* @since 3.0.0
*
);
}
+ /**
+ * @global WP_Query $wp_query
+ * @global int $per_page
+ * @param array $posts
+ * @param int $level
+ */
public function display_rows( $posts = array(), $level = 0 ) {
global $wp_query, $per_page;
}
}
+ /**
+ * @global string $mode
+ * @param array $posts
+ * @param int $level
+ */
private function _display_rows( $posts, $level = 0 ) {
global $mode;
$this->single_row( $post, $level );
}
+ /**
+ * @global wpdb $wpdb
+ * @param array $pages
+ * @param int $pagenum
+ * @param int $per_page
+ * @return bool|null
+ */
private function _display_rows_hierarchical( $pages, $pagenum = 1, $per_page = 20 ) {
global $wpdb;
unset( $children_pages[$parent] ); //required in order to keep track of orphans
}
+ /**
+ * @global string $mode
+ * @staticvar string $alternate
+ * @param WP_Post $post
+ * @param int $level
+ */
public function single_row( $post, $level = 0 ) {
global $mode;
static $alternate;
$actions = array();
if ( $can_edit_post && 'trash' != $post->post_status ) {
- $actions['edit'] = '<a href="' . get_edit_post_link( $post->ID, true ) . '" title="' . esc_attr( __( 'Edit this item' ) ) . '">' . __( 'Edit' ) . '</a>';
- $actions['inline hide-if-no-js'] = '<a href="#" class="editinline" title="' . esc_attr( __( 'Edit this item inline' ) ) . '">' . __( 'Quick Edit' ) . '</a>';
+ $actions['edit'] = '<a href="' . get_edit_post_link( $post->ID, true ) . '" title="' . esc_attr__( 'Edit this item' ) . '">' . __( 'Edit' ) . '</a>';
+ $actions['inline hide-if-no-js'] = '<a href="#" class="editinline" title="' . esc_attr__( 'Edit this item inline' ) . '">' . __( 'Quick Edit' ) . '</a>';
}
if ( current_user_can( 'delete_post', $post->ID ) ) {
if ( 'trash' == $post->post_status )
- $actions['untrash'] = "<a title='" . esc_attr( __( 'Restore this item from the Trash' ) ) . "' href='" . wp_nonce_url( admin_url( sprintf( $post_type_object->_edit_link . '&action=untrash', $post->ID ) ), 'untrash-post_' . $post->ID ) . "'>" . __( 'Restore' ) . "</a>";
+ $actions['untrash'] = "<a title='" . esc_attr__( 'Restore this item from the Trash' ) . "' href='" . wp_nonce_url( admin_url( sprintf( $post_type_object->_edit_link . '&action=untrash', $post->ID ) ), 'untrash-post_' . $post->ID ) . "'>" . __( 'Restore' ) . "</a>";
elseif ( EMPTY_TRASH_DAYS )
- $actions['trash'] = "<a class='submitdelete' title='" . esc_attr( __( 'Move this item to the Trash' ) ) . "' href='" . get_delete_post_link( $post->ID ) . "'>" . __( 'Trash' ) . "</a>";
+ $actions['trash'] = "<a class='submitdelete' title='" . esc_attr__( 'Move this item to the Trash' ) . "' href='" . get_delete_post_link( $post->ID ) . "'>" . __( 'Trash' ) . "</a>";
if ( 'trash' == $post->post_status || !EMPTY_TRASH_DAYS )
- $actions['delete'] = "<a class='submitdelete' title='" . esc_attr( __( 'Delete this item permanently' ) ) . "' href='" . get_delete_post_link( $post->ID, '', true ) . "'>" . __( 'Delete Permanently' ) . "</a>";
+ $actions['delete'] = "<a class='submitdelete' title='" . esc_attr__( 'Delete this item permanently' ) . "' href='" . get_delete_post_link( $post->ID, '', true ) . "'>" . __( 'Delete Permanently' ) . "</a>";
}
if ( $post_type_object->public ) {
if ( in_array( $post->post_status, array( 'pending', 'draft', 'future' ) ) ) {
/**
* Fires for each custom column of a specific post type in the Posts list table.
*
- * The dynamic portion of the hook name, $post->post_type, refers to the post type.
+ * The dynamic portion of the hook name, `$post->post_type`, refers to the post type.
*
* @since 3.1.0
*
<?php if ( $bulk ) : ?>
<option value="-1"><?php _e( '— No Change —' ); ?></option>
<?php endif; // $bulk ?>
- <option value="default"><?php _e( 'Default Template' ); ?></option>
+ <?php
+ /** This filter is documented in wp-admin/includes/meta-boxes.php */
+ $default_title = apply_filters( 'default_page_template_title', __( 'Default Template' ), 'quick-edit' );
+ ?>
+ <option value="default"><?php echo esc_html( $default_title ); ?></option>
<?php page_template_dropdown() ?>
</select>
</label>