*
* @see WP_List_Table::__construct() for more information on default arguments.
*
- * @global object $post_type_object
- * @global wpdb $wpdb
+ * @global WP_Post_Type $post_type_object
+ * @global wpdb $wpdb
*
* @param array $args An associative array of arguments.
*/
}
/**
- * @global int $cat
+ * Displays a categories drop-down for filtering on the Posts list table.
+ *
+ * @since 4.6.0
+ * @access protected
+ *
+ * @global int $cat Currently selected category.
+ *
+ * @param string $post_type Post type slug.
+ */
+ protected function categories_dropdown( $post_type ) {
+ global $cat;
+
+ /**
+ * Filters whether to remove the 'Categories' drop-down from the post list table.
+ *
+ * @since 4.6.0
+ *
+ * @param bool $disable Whether to disable the categories drop-down. Default false.
+ * @param string $post_type Post type slug.
+ */
+ if ( false !== apply_filters( 'disable_categories_dropdown', false, $post_type ) ) {
+ return;
+ }
+
+ if ( is_object_in_taxonomy( $post_type, 'category' ) ) {
+ $dropdown_options = array(
+ 'show_option_all' => get_taxonomy( 'category' )->labels->all_items,
+ '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 );
+ }
+ }
+
+ /**
* @param string $which
*/
protected function extra_tablenav( $which ) {
- global $cat;
?>
<div class="alignleft actions">
<?php
if ( 'top' === $which && !is_singular() ) {
+ ob_start();
$this->months_dropdown( $this->screen->post_type );
-
- if ( is_object_in_taxonomy( $this->screen->post_type, 'category' ) ) {
- $dropdown_options = array(
- 'show_option_all' => get_taxonomy( 'category' )->labels->all_items,
- '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 );
- }
+ $this->categories_dropdown( $this->screen->post_type );
/**
* Fires before the Filter button on the Posts and Pages list tables.
*
* @since 2.1.0
* @since 4.4.0 The `$post_type` parameter was added.
+ * @since 4.6.0 The `$which` parameter was added.
*
* @param string $post_type The post type slug.
+ * @param string $which The location of the extra table nav markup:
+ * 'top' or 'bottom'.
*/
- do_action( 'restrict_manage_posts', $this->screen->post_type );
+ do_action( 'restrict_manage_posts', $this->screen->post_type, $which );
+
+ $output = ob_get_clean();
- submit_button( __( 'Filter' ), 'button', 'filter_action', false, array( 'id' => 'post-query-submit' ) );
+ if ( ! empty( $output ) ) {
+ echo $output;
+ submit_button( __( 'Filter' ), '', 'filter_action', false, array( 'id' => 'post-query-submit' ) );
+ }
}
if ( $this->is_trash && current_user_can( get_post_type_object( $this->screen->post_type )->cap->edit_others_posts ) ) {
$taxonomies = wp_filter_object_list( $taxonomies, array( 'show_admin_column' => true ), 'and', 'name' );
/**
- * Filter the taxonomy columns in the Posts list table.
+ * Filters the taxonomy columns in the Posts list table.
*
* The dynamic portion of the hook name, `$post_type`, refers to the post
* type slug.
if ( 'page' === $post_type ) {
/**
- * Filter the columns displayed in the Pages list table.
+ * Filters the columns displayed in the Pages list table.
*
* @since 2.5.0
*
} else {
/**
- * Filter the columns displayed in the Posts list table.
+ * Filters the columns displayed in the Posts list table.
*
* @since 1.5.0
*
}
/**
- * Filter the columns displayed in the Posts list table for a specific post type.
+ * Filters 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.
*
printf( __( 'Select %s' ), _draft_or_post_title() );
?></label>
<input id="cb-select-<?php the_ID(); ?>" type="checkbox" name="post[]" value="<?php the_ID(); ?>" />
- <div class="locked-indicator"></div>
+ <div class="locked-indicator">
+ <span class="locked-indicator-icon" aria-hidden="true"></span>
+ <span class="screen-reader-text"><?php
+ printf(
+ /* translators: %s: post title */
+ __( '“%s” is locked' ),
+ _draft_or_post_title()
+ );
+ ?></span>
+ </div>
<?php endif;
}
}
}
+ $can_edit_post = current_user_can( 'edit_post', $post->ID );
+
+ if ( $can_edit_post && $post->post_status != 'trash' ) {
+ $lock_holder = wp_check_post_lock( $post->ID );
+
+ if ( $lock_holder ) {
+ $lock_holder = get_userdata( $lock_holder );
+ $locked_avatar = get_avatar( $lock_holder->ID, 18 );
+ $locked_text = esc_html( sprintf( __( '%s is currently editing' ), $lock_holder->display_name ) );
+ } else {
+ $locked_avatar = $locked_text = '';
+ }
+
+ echo '<div class="locked-info"><span class="locked-avatar">' . $locked_avatar . '</span> <span class="locked-text">' . $locked_text . "</span></div>\n";
+ }
+
$pad = str_repeat( '— ', $this->current_level );
echo "<strong>";
echo $this->get_edit_link( $format_args, $label . ':', $format_class );
}
- $can_edit_post = current_user_can( 'edit_post', $post->ID );
$title = _draft_or_post_title();
if ( $can_edit_post && $post->post_status != 'trash' ) {
}
echo "</strong>\n";
- if ( $can_edit_post && $post->post_status != 'trash' ) {
- $lock_holder = wp_check_post_lock( $post->ID );
-
- if ( $lock_holder ) {
- $lock_holder = get_userdata( $lock_holder );
- $locked_avatar = get_avatar( $lock_holder->ID, 18 );
- $locked_text = esc_html( sprintf( __( '%s is currently editing' ), $lock_holder->display_name ) );
- } else {
- $locked_avatar = $locked_text = '';
- }
-
- echo '<div class="locked-info"><span class="locked-avatar">' . $locked_avatar . '</span> <span class="locked-text">' . $locked_text . "</span></div>\n";
- }
-
if ( ! is_post_type_hierarchical( $this->screen->post_type ) && 'excerpt' === $mode && current_user_can( 'read_post', $post->ID ) ) {
the_excerpt();
}
echo '<br />';
if ( 'excerpt' === $mode ) {
/**
- * Filter the published time of the post.
+ * Filters the published time of the post.
*
* If `$mode` equals 'excerpt', the published time and date are both displayed.
* If `$mode` equals 'list' (default), the publish date is displayed, with the
if ( is_post_type_hierarchical( $post->post_type ) ) {
/**
- * Filter the array of row action links on the Pages list table.
+ * Filters the array of row action links on the Pages list table.
*
* The filter is evaluated only for hierarchical post types.
*
} else {
/**
- * Filter the array of row action links on the Posts list table.
+ * Filters the array of row action links on the Posts list table.
*
* The filter is evaluated only for non-hierarchical post types.
*
$show_in_quick_edit = $taxonomy->show_in_quick_edit;
/**
- * Filter whether the current taxonomy should be shown in the Quick Edit panel.
+ * Filters whether the current taxonomy should be shown in the Quick Edit panel.
*
* @since 4.2.0
*
$dropdown_args['show_option_no_change'] = __( '— No Change —' );
/**
- * Filter the arguments used to generate the Quick Edit page-parent drop-down.
+ * Filters the arguments used to generate the Quick Edit page-parent drop-down.
*
* @since 2.7.0
*
<span class="input-text-wrap"><input type="text" name="menu_order" class="inline-edit-menu-order-input" value="<?php echo $post->menu_order ?>" /></span>
</label>
- <?php endif; // !$bulk
-
- if ( 'page' === $screen->post_type ) :
- ?>
-
- <label>
- <span class="title"><?php _e( 'Template' ); ?></span>
- <select name="page_template">
- <?php if ( $bulk ) : ?>
- <option value="-1"><?php _e( '— No Change —' ); ?></option>
- <?php endif; // $bulk ?>
- <?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>
-
<?php
- endif; // page post_type
+ endif; // !$bulk
endif; // page-attributes
?>
+ <?php if ( 0 < count( get_page_templates( null, $screen->post_type ) ) ) : ?>
+ <label>
+ <span class="title"><?php _e( 'Template' ); ?></span>
+ <select name="page_template">
+<?php if ( $bulk ) : ?>
+ <option value="-1"><?php _e( '— No Change —' ); ?></option>
+<?php endif; // $bulk ?>
+ <?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( '', $screen->post_type ) ?>
+ </select>
+ </label>
+ <?php endif; ?>
+
<?php if ( count( $flat_taxonomies ) && !$bulk ) : ?>
<?php foreach ( $flat_taxonomies as $taxonomy ) : ?>
- <?php if ( current_user_can( $taxonomy->cap->assign_terms ) ) : ?>
+ <?php if ( current_user_can( $taxonomy->cap->assign_terms ) ) :
+ $taxonomy_name = esc_attr( $taxonomy->name );
+
+ ?>
<label class="inline-edit-tags">
<span class="title"><?php echo esc_html( $taxonomy->labels->name ) ?></span>
- <textarea cols="22" rows="1" name="tax_input[<?php echo esc_attr( $taxonomy->name )?>]" class="tax_input_<?php echo esc_attr( $taxonomy->name )?>"></textarea>
+ <textarea data-wp-taxonomy="<?php echo $taxonomy_name; ?>" cols="22" rows="1" name="tax_input[<?php echo $taxonomy_name; ?>]" class="tax_input_<?php echo $taxonomy_name; ?>"></textarea>
</label>
<?php endif; ?>
}
?>
<p class="submit inline-edit-save">
- <button type="button" class="button-secondary cancel alignleft"><?php _e( 'Cancel' ); ?></button>
+ <button type="button" class="button cancel alignleft"><?php _e( 'Cancel' ); ?></button>
<?php if ( ! $bulk ) {
wp_nonce_field( 'inlineeditnonce', '_inline_edit', false );
?>
- <button type="button" class="button-primary save alignright"><?php _e( 'Update' ); ?></button>
+ <button type="button" class="button button-primary save alignright"><?php _e( 'Update' ); ?></button>
<span class="spinner"></span>
<?php } else {
- submit_button( __( 'Update' ), 'button-primary alignright', 'bulk_edit', false );
+ submit_button( __( 'Update' ), 'primary alignright', 'bulk_edit', false );
} ?>
<input type="hidden" name="post_view" value="<?php echo esc_attr( $m ); ?>" />
<input type="hidden" name="screen" value="<?php echo esc_attr( $screen->id ); ?>" />