Changeset 42343 for trunk/src/wp-admin/edit.php
- Timestamp:
- 11/30/2017 11:09:33 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-admin/edit.php
r42228 r42343 10 10 require_once( dirname( __FILE__ ) . '/admin.php' ); 11 11 12 if ( ! $typenow ) 12 if ( ! $typenow ) { 13 13 wp_die( __( 'Invalid post type.' ) ); 14 } 14 15 15 16 if ( ! in_array( $typenow, get_post_types( array( 'show_ui' => true ) ) ) ) { … … 29 30 global $post_type, $post_type_object; 30 31 31 $post_type = $typenow;32 $post_type = $typenow; 32 33 $post_type_object = get_post_type_object( $post_type ); 33 34 34 if ( ! $post_type_object ) 35 if ( ! $post_type_object ) { 35 36 wp_die( __( 'Invalid post type.' ) ); 37 } 36 38 37 39 if ( ! current_user_can( $post_type_object->cap->edit_posts ) ) { … … 43 45 } 44 46 45 $wp_list_table = _get_list_table( 'WP_Posts_List_Table');46 $pagenum = $wp_list_table->get_pagenum();47 $wp_list_table = _get_list_table( 'WP_Posts_List_Table' ); 48 $pagenum = $wp_list_table->get_pagenum(); 47 49 48 50 // Back-compat for viewing comments of an entry … … 56 58 57 59 if ( 'post' != $post_type ) { 58 $parent_file = "edit.php?post_type=$post_type";59 $submenu_file = "edit.php?post_type=$post_type";60 $parent_file = "edit.php?post_type=$post_type"; 61 $submenu_file = "edit.php?post_type=$post_type"; 60 62 $post_new_file = "post-new.php?post_type=$post_type"; 61 63 } else { 62 $parent_file = 'edit.php';63 $submenu_file = 'edit.php';64 $parent_file = 'edit.php'; 65 $submenu_file = 'edit.php'; 64 66 $post_new_file = 'post-new.php'; 65 67 } … … 68 70 69 71 if ( $doaction ) { 70 check_admin_referer( 'bulk-posts');71 72 $sendback = remove_query_arg( array( 'trashed', 'untrashed', 'deleted', 'locked', 'ids'), wp_get_referer() );73 if ( ! $sendback ) 72 check_admin_referer( 'bulk-posts' ); 73 74 $sendback = remove_query_arg( array( 'trashed', 'untrashed', 'deleted', 'locked', 'ids' ), wp_get_referer() ); 75 if ( ! $sendback ) { 74 76 $sendback = admin_url( $parent_file ); 77 } 75 78 $sendback = add_query_arg( 'paged', $pagenum, $sendback ); 76 if ( strpos($sendback, 'post.php') !== false ) 77 $sendback = admin_url($post_new_file); 79 if ( strpos( $sendback, 'post.php' ) !== false ) { 80 $sendback = admin_url( $post_new_file ); 81 } 78 82 79 83 if ( 'delete_all' == $doaction ) { 80 84 // Prepare for deletion of all posts with a specified post status (i.e. Empty trash). 81 $post_status = preg_replace( '/[^a-z0-9_-]+/i', '', $_REQUEST['post_status']);85 $post_status = preg_replace( '/[^a-z0-9_-]+/i', '', $_REQUEST['post_status'] ); 82 86 // Validate the post status exists. 83 87 if ( get_post_status_object( $post_status ) ) { … … 89 93 } elseif ( isset( $_REQUEST['ids'] ) ) { 90 94 $post_ids = explode( ',', $_REQUEST['ids'] ); 91 } elseif ( ! empty( $_REQUEST['post'] ) ) {92 $post_ids = array_map( 'intval', $_REQUEST['post']);93 } 94 95 if ( ! isset( $post_ids ) ) {95 } elseif ( ! empty( $_REQUEST['post'] ) ) { 96 $post_ids = array_map( 'intval', $_REQUEST['post'] ); 97 } 98 99 if ( ! isset( $post_ids ) ) { 96 100 wp_redirect( $sendback ); 97 101 exit; … … 103 107 104 108 foreach ( (array) $post_ids as $post_id ) { 105 if ( !current_user_can( 'delete_post', $post_id) ) 106 wp_die( __('Sorry, you are not allowed to move this item to the Trash.') ); 109 if ( ! current_user_can( 'delete_post', $post_id ) ) { 110 wp_die( __( 'Sorry, you are not allowed to move this item to the Trash.' ) ); 111 } 107 112 108 113 if ( wp_check_post_lock( $post_id ) ) { … … 111 116 } 112 117 113 if ( !wp_trash_post($post_id) ) 114 wp_die( __('Error in moving to Trash.') ); 118 if ( ! wp_trash_post( $post_id ) ) { 119 wp_die( __( 'Error in moving to Trash.' ) ); 120 } 115 121 116 122 $trashed++; 117 123 } 118 124 119 $sendback = add_query_arg( array('trashed' => $trashed, 'ids' => join(',', $post_ids), 'locked' => $locked ), $sendback ); 125 $sendback = add_query_arg( 126 array( 127 'trashed' => $trashed, 128 'ids' => join( ',', $post_ids ), 129 'locked' => $locked, 130 ), $sendback 131 ); 120 132 break; 121 133 case 'untrash': 122 134 $untrashed = 0; 123 135 foreach ( (array) $post_ids as $post_id ) { 124 if ( !current_user_can( 'delete_post', $post_id) ) 125 wp_die( __('Sorry, you are not allowed to restore this item from the Trash.') ); 126 127 if ( !wp_untrash_post($post_id) ) 128 wp_die( __('Error in restoring from Trash.') ); 136 if ( ! current_user_can( 'delete_post', $post_id ) ) { 137 wp_die( __( 'Sorry, you are not allowed to restore this item from the Trash.' ) ); 138 } 139 140 if ( ! wp_untrash_post( $post_id ) ) { 141 wp_die( __( 'Error in restoring from Trash.' ) ); 142 } 129 143 130 144 $untrashed++; 131 145 } 132 $sendback = add_query_arg( 'untrashed', $untrashed, $sendback);146 $sendback = add_query_arg( 'untrashed', $untrashed, $sendback ); 133 147 break; 134 148 case 'delete': 135 149 $deleted = 0; 136 150 foreach ( (array) $post_ids as $post_id ) { 137 $post_del = get_post($post_id); 138 139 if ( !current_user_can( 'delete_post', $post_id ) ) 140 wp_die( __('Sorry, you are not allowed to delete this item.') ); 151 $post_del = get_post( $post_id ); 152 153 if ( ! current_user_can( 'delete_post', $post_id ) ) { 154 wp_die( __( 'Sorry, you are not allowed to delete this item.' ) ); 155 } 141 156 142 157 if ( $post_del->post_type == 'attachment' ) { 143 if ( ! wp_delete_attachment($post_id) ) 144 wp_die( __('Error in deleting.') ); 158 if ( ! wp_delete_attachment( $post_id ) ) { 159 wp_die( __( 'Error in deleting.' ) ); 160 } 145 161 } else { 146 if ( !wp_delete_post($post_id) ) 147 wp_die( __('Error in deleting.') ); 162 if ( ! wp_delete_post( $post_id ) ) { 163 wp_die( __( 'Error in deleting.' ) ); 164 } 148 165 } 149 166 $deleted++; 150 167 } 151 $sendback = add_query_arg( 'deleted', $deleted, $sendback);168 $sendback = add_query_arg( 'deleted', $deleted, $sendback ); 152 169 break; 153 170 case 'edit': 154 if ( isset( $_REQUEST['bulk_edit']) ) {155 $done = bulk_edit_posts( $_REQUEST);156 157 if ( is_array( $done) ) {171 if ( isset( $_REQUEST['bulk_edit'] ) ) { 172 $done = bulk_edit_posts( $_REQUEST ); 173 174 if ( is_array( $done ) ) { 158 175 $done['updated'] = count( $done['updated'] ); 159 176 $done['skipped'] = count( $done['skipped'] ); 160 $done['locked'] = count( $done['locked'] );161 $sendback = add_query_arg( $done, $sendback );177 $done['locked'] = count( $done['locked'] ); 178 $sendback = add_query_arg( $done, $sendback ); 162 179 } 163 180 } … … 169 186 } 170 187 171 $sendback = remove_query_arg( array( 'action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status', 'post', 'bulk_edit', 'post_view'), $sendback );172 173 wp_redirect( $sendback);188 $sendback = remove_query_arg( array( 'action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status', 'post', 'bulk_edit', 'post_view' ), $sendback ); 189 190 wp_redirect( $sendback ); 174 191 exit(); 175 } elseif ( ! empty( $_REQUEST['_wp_http_referer']) ) {176 wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce'), wp_unslash($_SERVER['REQUEST_URI']) ) );192 } elseif ( ! empty( $_REQUEST['_wp_http_referer'] ) ) { 193 wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), wp_unslash( $_SERVER['REQUEST_URI'] ) ) ); 177 194 exit; 178 195 } … … 180 197 $wp_list_table->prepare_items(); 181 198 182 wp_enqueue_script( 'inline-edit-post');183 wp_enqueue_script( 'heartbeat');199 wp_enqueue_script( 'inline-edit-post' ); 200 wp_enqueue_script( 'heartbeat' ); 184 201 185 202 $title = $post_type_object->labels->name; 186 203 187 204 if ( 'post' == $post_type ) { 188 get_current_screen()->add_help_tab( array( 189 'id' => 'overview', 190 'title' => __('Overview'), 191 'content' => 192 '<p>' . __('This screen provides access to all of your posts. You can customize the display of this screen to suit your workflow.') . '</p>' 193 ) ); 194 get_current_screen()->add_help_tab( array( 195 'id' => 'screen-content', 196 'title' => __('Screen Content'), 197 'content' => 198 '<p>' . __('You can customize the display of this screen’s contents in a number of ways:') . '</p>' . 199 '<ul>' . 200 '<li>' . __('You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab.') . '</li>' . 201 '<li>' . __( 'You can filter the list of posts by post status using the text links above the posts list to only show posts with that status. The default view is to show all posts.' ) . '</li>' . 202 '<li>' . __('You can view posts in a simple title list or with an excerpt using the Screen Options tab.') . '</li>' . 203 '<li>' . __('You can refine the list to show only posts in a specific category or from a specific month by using the dropdown menus above the posts list. Click the Filter button after making your selection. You also can refine the list by clicking on the post author, category or tag in the posts list.') . '</li>' . 204 '</ul>' 205 ) ); 206 get_current_screen()->add_help_tab( array( 207 'id' => 'action-links', 208 'title' => __('Available Actions'), 209 'content' => 210 '<p>' . __('Hovering over a row in the posts list will display action links that allow you to manage your post. You can perform the following actions:') . '</p>' . 211 '<ul>' . 212 '<li>' . __('<strong>Edit</strong> takes you to the editing screen for that post. You can also reach that screen by clicking on the post title.') . '</li>' . 213 '<li>' . __('<strong>Quick Edit</strong> provides inline access to the metadata of your post, allowing you to update post details without leaving this screen.') . '</li>' . 214 '<li>' . __('<strong>Trash</strong> removes your post from this list and places it in the trash, from which you can permanently delete it.') . '</li>' . 215 '<li>' . __('<strong>Preview</strong> will show you what your draft post will look like if you publish it. View will take you to your live site to view the post. Which link is available depends on your post’s status.') . '</li>' . 216 '</ul>' 217 ) ); 218 get_current_screen()->add_help_tab( array( 219 'id' => 'bulk-actions', 220 'title' => __('Bulk Actions'), 221 'content' => 222 '<p>' . __('You can also edit or move multiple posts to the trash at once. Select the posts you want to act on using the checkboxes, then select the action you want to take from the Bulk Actions menu and click Apply.') . '</p>' . 223 '<p>' . __('When using Bulk Edit, you can change the metadata (categories, author, etc.) for all selected posts at once. To remove a post from the grouping, just click the x next to its name in the Bulk Edit area that appears.') . '</p>' 224 ) ); 205 get_current_screen()->add_help_tab( 206 array( 207 'id' => 'overview', 208 'title' => __( 'Overview' ), 209 'content' => 210 '<p>' . __( 'This screen provides access to all of your posts. You can customize the display of this screen to suit your workflow.' ) . '</p>', 211 ) 212 ); 213 get_current_screen()->add_help_tab( 214 array( 215 'id' => 'screen-content', 216 'title' => __( 'Screen Content' ), 217 'content' => 218 '<p>' . __( 'You can customize the display of this screen’s contents in a number of ways:' ) . '</p>' . 219 '<ul>' . 220 '<li>' . __( 'You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab.' ) . '</li>' . 221 '<li>' . __( 'You can filter the list of posts by post status using the text links above the posts list to only show posts with that status. The default view is to show all posts.' ) . '</li>' . 222 '<li>' . __( 'You can view posts in a simple title list or with an excerpt using the Screen Options tab.' ) . '</li>' . 223 '<li>' . __( 'You can refine the list to show only posts in a specific category or from a specific month by using the dropdown menus above the posts list. Click the Filter button after making your selection. You also can refine the list by clicking on the post author, category or tag in the posts list.' ) . '</li>' . 224 '</ul>', 225 ) 226 ); 227 get_current_screen()->add_help_tab( 228 array( 229 'id' => 'action-links', 230 'title' => __( 'Available Actions' ), 231 'content' => 232 '<p>' . __( 'Hovering over a row in the posts list will display action links that allow you to manage your post. You can perform the following actions:' ) . '</p>' . 233 '<ul>' . 234 '<li>' . __( '<strong>Edit</strong> takes you to the editing screen for that post. You can also reach that screen by clicking on the post title.' ) . '</li>' . 235 '<li>' . __( '<strong>Quick Edit</strong> provides inline access to the metadata of your post, allowing you to update post details without leaving this screen.' ) . '</li>' . 236 '<li>' . __( '<strong>Trash</strong> removes your post from this list and places it in the trash, from which you can permanently delete it.' ) . '</li>' . 237 '<li>' . __( '<strong>Preview</strong> will show you what your draft post will look like if you publish it. View will take you to your live site to view the post. Which link is available depends on your post’s status.' ) . '</li>' . 238 '</ul>', 239 ) 240 ); 241 get_current_screen()->add_help_tab( 242 array( 243 'id' => 'bulk-actions', 244 'title' => __( 'Bulk Actions' ), 245 'content' => 246 '<p>' . __( 'You can also edit or move multiple posts to the trash at once. Select the posts you want to act on using the checkboxes, then select the action you want to take from the Bulk Actions menu and click Apply.' ) . '</p>' . 247 '<p>' . __( 'When using Bulk Edit, you can change the metadata (categories, author, etc.) for all selected posts at once. To remove a post from the grouping, just click the x next to its name in the Bulk Edit area that appears.' ) . '</p>', 248 ) 249 ); 225 250 226 251 get_current_screen()->set_help_sidebar( 227 '<p><strong>' . __('For more information:') . '</strong></p>' .228 '<p>' . __('<a href="https://codex.wordpress.org/Posts_Screen">Documentation on Managing Posts</a>') . '</p>' .229 '<p>' . __('<a href="https://wordpress.org/support/">Support Forums</a>') . '</p>'252 '<p><strong>' . __( 'For more information:' ) . '</strong></p>' . 253 '<p>' . __( '<a href="https://codex.wordpress.org/Posts_Screen">Documentation on Managing Posts</a>' ) . '</p>' . 254 '<p>' . __( '<a href="https://wordpress.org/support/">Support Forums</a>' ) . '</p>' 230 255 ); 231 256 232 257 } elseif ( 'page' == $post_type ) { 233 get_current_screen()->add_help_tab( array( 234 'id' => 'overview', 235 'title' => __('Overview'), 236 'content' => 237 '<p>' . __('Pages are similar to posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest pages under other pages by making one the “Parent” of the other, creating a group of pages.') . '</p>' 238 ) ); 239 get_current_screen()->add_help_tab( array( 240 'id' => 'managing-pages', 241 'title' => __('Managing Pages'), 242 'content' => 243 '<p>' . __('Managing pages is very similar to managing posts, and the screens can be customized in the same way.') . '</p>' . 244 '<p>' . __('You can also perform the same types of actions, including narrowing the list by using the filters, acting on a page using the action links that appear when you hover over a row, or using the Bulk Actions menu to edit the metadata for multiple pages at once.') . '</p>' 245 ) ); 258 get_current_screen()->add_help_tab( 259 array( 260 'id' => 'overview', 261 'title' => __( 'Overview' ), 262 'content' => 263 '<p>' . __( 'Pages are similar to posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest pages under other pages by making one the “Parent” of the other, creating a group of pages.' ) . '</p>', 264 ) 265 ); 266 get_current_screen()->add_help_tab( 267 array( 268 'id' => 'managing-pages', 269 'title' => __( 'Managing Pages' ), 270 'content' => 271 '<p>' . __( 'Managing pages is very similar to managing posts, and the screens can be customized in the same way.' ) . '</p>' . 272 '<p>' . __( 'You can also perform the same types of actions, including narrowing the list by using the filters, acting on a page using the action links that appear when you hover over a row, or using the Bulk Actions menu to edit the metadata for multiple pages at once.' ) . '</p>', 273 ) 274 ); 246 275 247 276 get_current_screen()->set_help_sidebar( 248 '<p><strong>' . __('For more information:') . '</strong></p>' . 249 '<p>' . __('<a href="https://codex.wordpress.org/Pages_Screen">Documentation on Managing Pages</a>') . '</p>' . 250 '<p>' . __('<a href="https://wordpress.org/support/">Support Forums</a>') . '</p>' 251 ); 252 253 } 254 255 get_current_screen()->set_screen_reader_content( array( 256 'heading_views' => $post_type_object->labels->filter_items_list, 257 'heading_pagination' => $post_type_object->labels->items_list_navigation, 258 'heading_list' => $post_type_object->labels->items_list, 259 ) ); 260 261 add_screen_option( 'per_page', array( 'default' => 20, 'option' => 'edit_' . $post_type . '_per_page' ) ); 277 '<p><strong>' . __( 'For more information:' ) . '</strong></p>' . 278 '<p>' . __( '<a href="https://codex.wordpress.org/Pages_Screen">Documentation on Managing Pages</a>' ) . '</p>' . 279 '<p>' . __( '<a href="https://wordpress.org/support/">Support Forums</a>' ) . '</p>' 280 ); 281 282 } 283 284 get_current_screen()->set_screen_reader_content( 285 array( 286 'heading_views' => $post_type_object->labels->filter_items_list, 287 'heading_pagination' => $post_type_object->labels->items_list_navigation, 288 'heading_list' => $post_type_object->labels->items_list, 289 ) 290 ); 291 292 add_screen_option( 293 'per_page', array( 294 'default' => 20, 295 'option' => 'edit_' . $post_type . '_per_page', 296 ) 297 ); 262 298 263 299 $bulk_counts = array( 264 'updated' => isset( $_REQUEST['updated'] ) ? absint( $_REQUEST['updated'] ): 0,265 'locked' => isset( $_REQUEST['locked'] ) ? absint( $_REQUEST['locked'] ): 0,266 'deleted' => isset( $_REQUEST['deleted'] ) ? absint( $_REQUEST['deleted'] ): 0,267 'trashed' => isset( $_REQUEST['trashed'] ) ? absint( $_REQUEST['trashed'] ): 0,300 'updated' => isset( $_REQUEST['updated'] ) ? absint( $_REQUEST['updated'] ) : 0, 301 'locked' => isset( $_REQUEST['locked'] ) ? absint( $_REQUEST['locked'] ) : 0, 302 'deleted' => isset( $_REQUEST['deleted'] ) ? absint( $_REQUEST['deleted'] ) : 0, 303 'trashed' => isset( $_REQUEST['trashed'] ) ? absint( $_REQUEST['trashed'] ) : 0, 268 304 'untrashed' => isset( $_REQUEST['untrashed'] ) ? absint( $_REQUEST['untrashed'] ) : 0, 269 305 ); 270 306 271 $bulk_messages = array();307 $bulk_messages = array(); 272 308 $bulk_messages['post'] = array( 273 309 'updated' => _n( '%s post updated.', '%s posts updated.', $bulk_counts['updated'] ), … … 299 335 */ 300 336 $bulk_messages = apply_filters( 'bulk_post_updated_messages', $bulk_messages, $bulk_counts ); 301 $bulk_counts = array_filter( $bulk_counts );337 $bulk_counts = array_filter( $bulk_counts ); 302 338 303 339 require_once( ABSPATH . 'wp-admin/admin-header.php' ); 304 340 ?> 305 341 <div class="wrap"> 306 <h1 class="wp-heading-inline"><?php 342 <h1 class="wp-heading-inline"> 343 <?php 307 344 echo esc_html( $post_type_object->labels->name ); 308 ?></h1> 345 ?> 346 </h1> 309 347 310 348 <?php … … 325 363 $messages = array(); 326 364 foreach ( $bulk_counts as $message => $count ) { 327 if ( isset( $bulk_messages[ $post_type ][ $message ] ) ) 365 if ( isset( $bulk_messages[ $post_type ][ $message ] ) ) { 328 366 $messages[] = sprintf( $bulk_messages[ $post_type ][ $message ], number_format_i18n( $count ) ); 329 elseif ( isset( $bulk_messages['post'][ $message ] ) )367 } elseif ( isset( $bulk_messages['post'][ $message ] ) ) { 330 368 $messages[] = sprintf( $bulk_messages['post'][ $message ], number_format_i18n( $count ) ); 369 } 331 370 332 371 if ( $message == 'trashed' && isset( $_REQUEST['ids'] ) ) { 333 $ids = preg_replace( '/[^0-9,]/', '', $_REQUEST['ids'] );334 $messages[] = '<a href="' . esc_url( wp_nonce_url( "edit.php?post_type=$post_type&doaction=undo&action=untrash&ids=$ids", "bulk-posts" ) ) . '">' . __('Undo') . '</a>';335 } 336 } 337 338 if ( $messages ) 372 $ids = preg_replace( '/[^0-9,]/', '', $_REQUEST['ids'] ); 373 $messages[] = '<a href="' . esc_url( wp_nonce_url( "edit.php?post_type=$post_type&doaction=undo&action=untrash&ids=$ids", 'bulk-posts' ) ) . '">' . __( 'Undo' ) . '</a>'; 374 } 375 } 376 377 if ( $messages ) { 339 378 echo '<div id="message" class="updated notice is-dismissible"><p>' . join( ' ', $messages ) . '</p></div>'; 379 } 340 380 unset( $messages ); 341 381 … … 349 389 <?php $wp_list_table->search_box( $post_type_object->labels->search_items, 'post' ); ?> 350 390 351 <input type="hidden" name="post_status" class="post_status_page" value="<?php echo ! empty($_REQUEST['post_status']) ? esc_attr($_REQUEST['post_status']) : 'all'; ?>" />391 <input type="hidden" name="post_status" class="post_status_page" value="<?php echo ! empty( $_REQUEST['post_status'] ) ? esc_attr( $_REQUEST['post_status'] ) : 'all'; ?>" /> 352 392 <input type="hidden" name="post_type" class="post_type_page" value="<?php echo $post_type; ?>" /> 353 393 … … 365 405 366 406 <?php 367 if ( $wp_list_table->has_items() ) 407 if ( $wp_list_table->has_items() ) { 368 408 $wp_list_table->inline_edit(); 409 } 369 410 ?> 370 411
Note: See TracChangeset
for help on using the changeset viewer.