diff --git a/wp-admin/edit-form-advanced.php b/wp-admin/edit-form-advanced.php
index 70e55d9f9e..2b63039479 100644
--- a/wp-admin/edit-form-advanced.php
+++ b/wp-admin/edit-form-advanced.php
@@ -40,8 +40,9 @@ $messages['page'] = array(
sprintf( __('Page updated. View page'), get_permalink($post_ID) ),
__('Custom field updated.'),
__('Custom field deleted.'),
- sprintf( __('Page published. View page'), get_permalink($post_ID) ),
+ __('Page updated.'),
isset($_GET['revision']) ? sprintf( __('Page restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
+ sprintf( __('Page published. View page'), get_permalink($post_ID) ),
sprintf( __('Page submitted. Preview page'), add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ),
// translators: Publish box date format, see http://php.net/date - Same as in meta-boxes.php
sprintf( __('Page scheduled for: %1$s. Preview page'), date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), get_permalink($post_ID) ),
diff --git a/wp-admin/page.php b/wp-admin/page.php
deleted file mode 100644
index e8af5b43f1..0000000000
--- a/wp-admin/page.php
+++ /dev/null
@@ -1,222 +0,0 @@
-ID) )
- wp_die( __('You attempted to edit a page that doesn’t exist. Perhaps it was deleted?') );
-
- if ( !current_user_can('edit_page', $page_ID) )
- wp_die( __('You are not allowed to edit this page.') );
-
- if ( 'trash' == $post->post_status )
- wp_die( __('You can’t edit this page because it is in the Trash. Please move it out of the Trash and try again.') );
-
- if ( 'page' != $post->post_type ) {
- wp_redirect( get_edit_post_link( $post_ID, 'url' ) );
- exit();
- }
-
- wp_enqueue_script('post');
- if ( user_can_richedit() )
- wp_enqueue_script('editor');
- add_thickbox();
- wp_enqueue_script('media-upload');
- wp_enqueue_script('word-count');
-
- if ( $last = wp_check_post_lock( $post->ID ) ) {
- add_action('admin_notices', '_admin_notice_post_locked' );
- } else {
- wp_set_post_lock( $post->ID );
- wp_enqueue_script('autosave');
- }
-
- $post_type = $post->post_type;
- include('edit-form-advanced.php');
- break;
-
-case 'editattachment':
- $page_id = $post_ID = (int) $_POST['post_ID'];
- check_admin_referer('update-attachment_' . $page_id);
-
- // Don't let these be changed
- unset($_POST['guid']);
- $_POST['post_type'] = 'attachment';
-
- // Update the thumbnail filename
- $newmeta = wp_get_attachment_metadata( $page_id, true );
- $newmeta['thumb'] = $_POST['thumb'];
-
- wp_update_attachment_metadata( $newmeta );
-
-case 'editpost':
- $page_ID = (int) $_POST['post_ID'];
- check_admin_referer('update-page_' . $page_ID);
-
- $page_ID = edit_post();
-
- redirect_page($page_ID);
-
- exit();
- break;
-
-case 'trash':
- $post_id = isset($_GET['post']) ? intval($_GET['post']) : intval($_POST['post_ID']);
- check_admin_referer('trash-page_' . $post_id);
-
- $post = & get_post($post_id);
-
- if ( !current_user_can('delete_page', $post_id) )
- wp_die( __('You are not allowed to move this page to the trash.') );
-
- if ( !wp_trash_post($post_id) )
- wp_die( __('Error in moving to trash...') );
-
- wp_redirect( add_query_arg( array('trashed' => 1, 'ids' => $post_id), $sendback ) );
- exit();
- break;
-
-case 'untrash':
- $post_id = isset($_GET['post']) ? intval($_GET['post']) : intval($_POST['post_ID']);
- check_admin_referer('untrash-page_' . $post_id);
-
- $post = & get_post($post_id);
-
- if ( !current_user_can('delete_page', $post_id) )
- wp_die( __('You are not allowed to move this page out of the trash.') );
-
- if ( !wp_untrash_post($post_id) )
- wp_die( __('Error in restoring from trash...') );
-
- wp_redirect( add_query_arg('untrashed', 1, $sendback) );
- exit();
- break;
-
-case 'delete':
- $page_id = isset($_GET['post']) ? intval($_GET['post']) : intval($_POST['post_ID']);
- check_admin_referer('delete-page_' . $page_id);
-
- $page = & get_post($page_id);
-
- if ( !current_user_can('delete_page', $page_id) )
- wp_die( __('You are not allowed to delete this page.') );
-
- if ( $page->post_type == 'attachment' ) {
- if ( ! wp_delete_attachment($page_id) )
- wp_die( __('Error in deleting...') );
- } else {
- if ( !wp_delete_post($page_id) )
- wp_die( __('Error in deleting...') );
- }
-
- wp_redirect( add_query_arg('deleted', 1, $sendback) );
- exit();
- break;
-
-case 'preview':
- check_admin_referer( 'autosave', 'autosavenonce' );
-
- $url = post_preview();
-
- wp_redirect($url);
- exit();
- break;
-
-default:
- wp_redirect('edit-pages.php');
- exit();
- break;
-} // end switch
-include('admin-footer.php');
-?>
diff --git a/wp-admin/post.php b/wp-admin/post.php
index 08596e594a..67f2607ec2 100644
--- a/wp-admin/post.php
+++ b/wp-admin/post.php
@@ -16,12 +16,32 @@ $submenu_file = 'edit.php';
wp_reset_vars(array('action', 'safe_mode', 'withcomments', 'posts', 'content', 'edited_post_title', 'comment_error', 'profile', 'trackback_url', 'excerpt', 'showcomments', 'commentstart', 'commentend', 'commentorder'));
+if ( isset($_GET['post']) )
+ $post_id = (int) $_GET['post'];
+elseif ( isset($_POST['post_ID']) )
+ $post_id = (int) $_POST['post_ID'];
+else
+ $post_id = 0;
+$post_ID = $post_id;
+
+$post = null;
+$post_type_object = null;
+$post_type_cap = null;
+if ( $post_id ) {
+ $post = get_post($post_id);
+ if ( $post ) {
+ $post_type_object = get_post_type_object($post->post_type);
+ if ( $post_type_object )
+ $post_type_cap = $post_type_object->capability_type;
+ }
+}
+
/**
* Redirect to previous page.
*
- * @param int $post_ID Optional. Post ID.
+ * @param int $post_id Optional. Post ID.
*/
-function redirect_post($post_ID = '') {
+function redirect_post($post_id = '') {
global $action;
$referredby = '';
@@ -37,7 +57,7 @@ function redirect_post($post_ID = '') {
elseif ( isset($_POST['publish']) )
$location = 'sidebar.php?a=b';
} elseif ( isset($_POST['save']) || isset($_POST['publish']) ) {
- $status = get_post_status( $post_ID );
+ $status = get_post_status( $post_id );
if ( isset( $_POST['publish'] ) ) {
switch ( $status ) {
@@ -54,7 +74,7 @@ function redirect_post($post_ID = '') {
$message = 'draft' == $status ? 10 : 1;
}
- $location = add_query_arg( 'message', $message, get_edit_post_link( $post_ID, 'url' ) );
+ $location = add_query_arg( 'message', $message, get_edit_post_link( $post_id, 'url' ) );
} elseif ( isset($_POST['addmeta']) && $_POST['addmeta'] ) {
$location = add_query_arg( 'message', 2, wp_get_referer() );
$location = explode('#', $location);
@@ -64,12 +84,12 @@ function redirect_post($post_ID = '') {
$location = explode('#', $location);
$location = $location[0] . '#postcustom';
} elseif ( 'post-quickpress-save-cont' == $_POST['action'] ) {
- $location = "post.php?action=edit&post=$post_ID&message=7";
+ $location = "post.php?action=edit&post=$post_id&message=7";
} else {
- $location = add_query_arg( 'message', 4, get_edit_post_link( $post_ID, 'url' ) );
+ $location = add_query_arg( 'message', 4, get_edit_post_link( $post_id, 'url' ) );
}
- wp_redirect( apply_filters( 'redirect_post_location', $location, $post_ID ) );
+ wp_redirect( apply_filters( 'redirect_post_location', $location, $post_id ) );
}
if ( isset( $_POST['deletepost'] ) )
@@ -100,55 +120,60 @@ case 'post-quickpress-save':
if ( !empty( $_POST['quickpress_post_ID'] ) ) {
$_POST['post_ID'] = (int) $_POST['quickpress_post_ID'];
- $post_ID = edit_post();
+ $post_id = edit_post();
} else {
- $post_ID = 'postajaxpost' == $action ? edit_post() : write_post();
+ $post_id = 'postajaxpost' == $action ? edit_post() : write_post();
}
if ( 0 === strpos( $action, 'post-quickpress' ) ) {
- $_POST['post_ID'] = $post_ID;
+ $_POST['post_ID'] = $post_id;
// output the quickpress dashboard widget
require_once(ABSPATH . 'wp-admin/includes/dashboard.php');
wp_dashboard_quick_press();
exit;
}
- redirect_post($post_ID);
+ redirect_post($post_id);
exit();
break;
case 'edit':
$editing = true;
- if ( empty( $_GET['post'] ) ) {
+ if ( empty( $post_id ) ) {
wp_redirect("post.php");
exit();
}
- $post_ID = $p = (int) $_GET['post'];
- $post = get_post($post_ID);
- $post_type_object = get_post_type_object($post->post_type);
+
+ $p = $post_id;
if ( empty($post->ID) )
- wp_die( __('You attempted to edit a post that doesn’t exist. Perhaps it was deleted?') );
+ wp_die( __('You attempted to edit an item that doesn’t exist. Perhaps it was deleted?') );
- if ( !current_user_can('edit_post', $post_ID) )
- wp_die( __('You are not allowed to edit this post.') );
+ if ( !current_user_can($post_type_object->edit_cap, $post_id) )
+ wp_die( __('You are not allowed to edit this item.') );
if ( 'trash' == $post->post_status )
- wp_die( __('You can’t edit this post because it is in the Trash. Please restore it and try again.') );
+ wp_die( __('You can’t edit this item because it is in the Trash. Please restore it and try again.') );
if ( null == $post_type_object )
wp_die( __('Unknown post type.') );
- if ( 'post' != $post->post_type && $post_type_object->_builtin ) {
- wp_redirect( get_edit_post_link( $post->ID, 'url' ) );
- exit();
- }
-
$post_type = $post->post_type;
- if ( 'post' != $post_type ) {
- $parent_file = "edit.php?post_type=$post_type";
- $submenu_file = "edit.php?post_type=$post_type";
+ if ( 'post' == $post_type ) {
+ $parent_file = "edit.php";
+ $submenu_file = "edit.php";
+ } elseif ( 'page' == $post_type ) {
+ $parent_file = "edit-pages.php";
+ $submenu_file = "edit-pages.php";
+ } else {
+ if ( $post_type_object->hierarchical ) {
+ $parent_file = "edit-pages.php?post_type=$post_type";
+ $submenu_file = "edit-pages.php?post_type=$post_type";
+ } else {
+ $parent_file = "edit.php?post_type=$post_type";
+ $submenu_file = "edit.php?post_type=$post_type";
+ }
}
wp_enqueue_script('post');
@@ -168,15 +193,13 @@ case 'edit':
}
$title = sprintf(__('Edit %s'), $post_type_object->label);
- $post = get_post_to_edit($post_ID);
+ $post = get_post_to_edit($post_id);
include('edit-form-advanced.php');
break;
case 'editattachment':
- $post_id = (int) $_POST['post_ID'];
-
check_admin_referer('update-attachment_' . $post_id);
// Don't let these be changed
@@ -190,24 +213,22 @@ case 'editattachment':
wp_update_attachment_metadata( $post_id, $newmeta );
case 'editpost':
- $post_ID = (int) $_POST['post_ID'];
- check_admin_referer('update-post_' . $post_ID);
+ check_admin_referer('update-' . $post->post_type . '_' . $post_id);
- $post_ID = edit_post();
+ $post_id = edit_post();
- redirect_post($post_ID); // Send user on their way while we keep working
+ redirect_post($post_id); // Send user on their way while we keep working
exit();
break;
case 'trash':
- $post_id = isset($_GET['post']) ? intval($_GET['post']) : intval($_POST['post_ID']);
check_admin_referer('trash-post_' . $post_id);
$post = & get_post($post_id);
- if ( !current_user_can('delete_post', $post_id) )
- wp_die( __('You are not allowed to move this post to the trash.') );
+ if ( !current_user_can('delete_' . $post_type_cap, $post_id) )
+ wp_die( __('You are not allowed to move this item to the trash.') );
if ( ! wp_trash_post($post_id) )
wp_die( __('Error in moving to trash...') );
@@ -217,13 +238,10 @@ case 'trash':
break;
case 'untrash':
- $post_id = isset($_GET['post']) ? intval($_GET['post']) : intval($_POST['post_ID']);
check_admin_referer('untrash-post_' . $post_id);
- $post = & get_post($post_id);
-
- if ( !current_user_can('delete_post', $post_id) )
- wp_die( __('You are not allowed to move this post out of the trash.') );
+ if ( !current_user_can('delete_' . $post_type_cap, $post_id) )
+ wp_die( __('You are not allowed to move this item out of the trash.') );
if ( ! wp_untrash_post($post_id) )
wp_die( __('Error in restoring from trash...') );
@@ -233,13 +251,10 @@ case 'untrash':
break;
case 'delete':
- $post_id = (isset($_GET['post'])) ? intval($_GET['post']) : intval($_POST['post_ID']);
check_admin_referer('delete-post_' . $post_id);
- $post = & get_post($post_id);
-
- if ( !current_user_can('delete_post', $post_id) )
- wp_die( __('You are not allowed to delete this post.') );
+ if ( !current_user_can('delete_' . $post_type_cap, $post_id) )
+ wp_die( __('You are not allowed to delete this item.') );
$force = !EMPTY_TRASH_DAYS;
if ( $post->post_type == 'attachment' ) {
@@ -265,7 +280,10 @@ case 'preview':
break;
default:
- wp_redirect('edit.php');
+ if ( $post_type_object->hierarchical )
+ wp_redirect('edit-pages.php');
+ else
+ wp_redirect('edit.php');
exit();
break;
} // end switch
diff --git a/wp-includes/post.php b/wp-includes/post.php
index 3690a1ef04..7b82b7a48b 100644
--- a/wp-includes/post.php
+++ b/wp-includes/post.php
@@ -16,7 +16,7 @@
*/
function create_initial_post_types() {
register_post_type( 'post', array('label' => __('Posts'), 'exclude_from_search' => false, '_builtin' => true, '_edit_link' => 'post.php?post=%d', 'capability_type' => 'post', 'hierarchical' => false) );
- register_post_type( 'page', array('label' => __('Pages'),'exclude_from_search' => false, '_builtin' => true, '_edit_link' => 'page.php?post=%d', 'capability_type' => 'page', 'hierarchical' => true) );
+ register_post_type( 'page', array('label' => __('Pages'),'exclude_from_search' => false, '_builtin' => true, '_edit_link' => 'post.php?post=%d', 'capability_type' => 'page', 'hierarchical' => true) );
register_post_type( 'attachment', array('label' => __('Media'), 'exclude_from_search' => false, '_builtin' => true, '_edit_link' => 'media.php?attachment_id=%d', 'capability_type' => 'post', 'hierarchical' => false) );
register_post_type( 'revision', array('label' => __('Revisions'),'exclude_from_search' => true, '_builtin' => true, '_edit_link' => 'revision.php?revision=%d', 'capability_type' => 'post', 'hierarchical' => false) );
add_post_type_support('post', array('post-thumbnails', 'excerpts', 'trackbacks', 'custom-fields', 'comments') );