wp/wp-admin/post-new.php
changeset 5 5e2f62d02dcd
parent 0 d970ebf37754
child 7 cf61fcea0001
--- a/wp/wp-admin/post-new.php	Mon Jun 08 16:11:51 2015 +0000
+++ b/wp/wp-admin/post-new.php	Tue Jun 09 03:35:32 2015 +0200
@@ -9,13 +9,15 @@
 /** Load WordPress Administration Bootstrap */
 require_once( dirname( __FILE__ ) . '/admin.php' );
 
-if ( !isset($_GET['post_type']) )
+global $post_type, $post_type_object, $post;
+
+if ( ! isset( $_GET['post_type'] ) ) {
 	$post_type = 'post';
-elseif ( in_array( $_GET['post_type'], get_post_types( array('show_ui' => true ) ) ) )
+} elseif ( in_array( $_GET['post_type'], get_post_types( array('show_ui' => true ) ) ) ) {
 	$post_type = $_GET['post_type'];
-else
+} else {
 	wp_die( __('Invalid post type') );
-
+}
 $post_type_object = get_post_type_object( $post_type );
 
 if ( 'post' == $post_type ) {
@@ -28,8 +30,16 @@
 	$submenu_file = "post-new.php?post_type=$post_type";
 	if ( isset( $post_type_object ) && $post_type_object->show_in_menu && $post_type_object->show_in_menu !== true ) {
 		$parent_file = $post_type_object->show_in_menu;
-		if ( ! isset( $_registered_pages[ get_plugin_page_hookname( "post-new.php?post_type=$post_type", $post_type_object->show_in_menu ) ] ) )
-			$submenu_file = $parent_file;
+		// What if there isn't a post-new.php item for this post type?
+		if ( ! isset( $_registered_pages[ get_plugin_page_hookname( "post-new.php?post_type=$post_type", $post_type_object->show_in_menu ) ] ) ) {
+			if (	isset( $_registered_pages[ get_plugin_page_hookname( "edit.php?post_type=$post_type", $post_type_object->show_in_menu ) ] ) ) {
+				// Fall back to edit.php for that post type, if it exists
+				$submenu_file = "edit.php?post_type=$post_type";
+			} else {
+				// Otherwise, give up and highlight the parent
+				$submenu_file = $parent_file;
+			}
+		}
 	} else {
 		$parent_file = "edit.php?post_type=$post_type";
 	}
@@ -40,7 +50,7 @@
 $editing = true;
 
 if ( ! current_user_can( $post_type_object->cap->edit_posts ) || ! current_user_can( $post_type_object->cap->create_posts ) )
-	wp_die( __( 'Cheatin’ uh?' ) );
+	wp_die( __( 'Cheatin’ uh?' ), 403 );
 
 // Schedule auto-draft cleanup
 if ( ! wp_next_scheduled( 'wp_scheduled_auto_draft_delete' ) )