diff --git a/wp-admin/admin-header.php b/wp-admin/admin-header.php index 652b33b4d6..d6f73bea8d 100644 --- a/wp-admin/admin-header.php +++ b/wp-admin/admin-header.php @@ -40,7 +40,7 @@ var ajaxurl = '', pagenow = ' ' . __('Undo') . '
'; + echo ' ' . __('Undo') . '
'; unset($_GET['trashed']); } diff --git a/wp-admin/includes/dashboard.php b/wp-admin/includes/dashboard.php index b05172c21a..74f6d9ec9f 100644 --- a/wp-admin/includes/dashboard.php +++ b/wp-admin/includes/dashboard.php @@ -252,8 +252,8 @@ function wp_dashboard_right_now() { $num = number_format_i18n( $num_pages->publish ); $text = _n( 'Page', 'Pages', $num_pages->publish ); if ( current_user_can( 'edit_pages' ) ) { - $num = "$num"; - $text = "$text"; + $num = "$num"; + $text = "$text"; } echo '' . $num . ''; echo '' . $text . ''; diff --git a/wp-admin/includes/template.php b/wp-admin/includes/template.php index f13a994705..fbc63fe38a 100644 --- a/wp-admin/includes/template.php +++ b/wp-admin/includes/template.php @@ -1605,6 +1605,7 @@ function display_page_row( $page, $level = 0 ) { $posts_columns = get_column_headers( $current_screen ); $hidden = get_hidden_columns( $current_screen ); $title = _draft_or_post_title(); + $post_type = $page->post_type; ?> $column_display_name) { } if ( current_user_can('delete_page', $page->ID) ) { if ( $post->post_status == 'trash' ) - $actions['untrash'] = "ID) . "'>" . __('Restore') . ""; + $actions['untrash'] = "ID) . "'>" . __('Restore') . ""; elseif ( EMPTY_TRASH_DAYS ) $actions['trash'] = "" . __('Trash') . ""; if ( $post->post_status == 'trash' || !EMPTY_TRASH_DAYS ) - $actions['delete'] = "ID) . "'>" . __('Delete Permanently') . ""; + $actions['delete'] = "ID) . "'>" . __('Delete Permanently') . ""; } if ( in_array($post->post_status, array('pending', 'draft')) ) { if ( current_user_can('edit_page', $page->ID) ) diff --git a/wp-includes/link-template.php b/wp-includes/link-template.php index 9fd303da44..923a9728e4 100644 --- a/wp-includes/link-template.php +++ b/wp-includes/link-template.php @@ -737,35 +737,19 @@ function get_delete_post_link($id = 0, $context = 'display') { else $action = 'action=trash&'; - switch ( $post->post_type ) : - case 'page' : - if ( !current_user_can( 'delete_page', $post->ID ) ) - return; - $file = 'page'; - $var = 'post'; - break; - case 'attachment' : - if ( !current_user_can( 'delete_post', $post->ID ) ) - return; - $file = 'media'; - $var = 'attachment_id'; - break; - case 'revision' : - if ( !current_user_can( 'delete_post', $post->ID ) ) - return; - $file = 'revision'; - $var = 'revision'; - $action = ''; - break; - default : - if ( !current_user_can( 'edit_post', $post->ID ) ) - return apply_filters( 'get_delete_post_link', '', $post->ID, $context ); - $file = 'post'; - $var = 'post'; - break; - endswitch; + if ( 'display' == $context ) + $action = '&action=trash'; + else + $action = '&action=trash'; - return apply_filters( 'get_delete_post_link', wp_nonce_url( admin_url("$file.php?{$action}$var=$post->ID"), "trash-{$file}_" . $post->ID ), $context ); + $post_type_object = get_post_type_object( $post->post_type ); + if ( !$post_type_object ) + return; + + if ( !current_user_can( $post_type_object->delete_cap, $post->ID ) ) + return; + + return apply_filters( 'get_delete_post_link', wp_nonce_url( admin_url( sprintf($post_type_object->_edit_link . $action, $post->ID) ), "trash-{$post->post_type}_" . $post->ID), $post->ID, $context ); } /** diff --git a/wp-includes/post.php b/wp-includes/post.php index c168f36c73..73d5fbedae 100644 --- a/wp-includes/post.php +++ b/wp-includes/post.php @@ -720,9 +720,11 @@ function register_post_type($post_type, $args = array()) { if ( empty($args->capability_type) ) { $args->edit_cap = ''; $args->read_cap = ''; + $args->delete_cap = ''; } else { $args->edit_cap = 'edit_' . $args->capability_type; $args->read_cap = 'read_' . $args->capability_type; + $args->delete_cap = 'delete_' . $args->capability_type; } if ( !$args->_builtin && $args->public )