[wp-trac] [WordPress Trac] #37506: /wp-admin/edit.php?post_type=page

WordPress Trac noreply at wordpress.org
Fri Jul 29 06:07:50 UTC 2016


#37506: /wp-admin/edit.php?post_type=page
-------------------------------+-----------------------------
 Reporter:  kitjoseph          |      Owner:
     Type:  defect (bug)       |     Status:  new
 Priority:  normal             |  Milestone:  Awaiting Review
Component:  Posts, Post Types  |    Version:  4.4.2
 Severity:  normal             |   Keywords:
  Focuses:                     |
-------------------------------+-----------------------------
 Hi I am getting internal server error , How to fix this ?


 this is the code of the edit.php

 <?php
 /**
  * Edit Posts Administration Screen.
  *
  * @package WordPress
  * @subpackage Administration
  */

 /** WordPress Administration Bootstrap */
 require_once( dirname( __FILE__ ) . '/admin.php' );

 if ( ! $typenow )
         wp_die( __( 'Invalid post type' ) );

 if ( ! in_array( $typenow, get_post_types( array( 'show_ui' => true ) ) )
 ) {
         wp_die( __( 'You are not allowed to edit posts in this post type.'
 ) );
 }

 if ( 'attachment' === $typenow ) {
         if ( wp_redirect( admin_url( 'upload.php' ) ) ) {
                 exit;
         }
 }

 /**
  * @global string $post_type
  * @global object $post_type_object
  */
 global $post_type, $post_type_object;

 $post_type = $typenow;
 $post_type_object = get_post_type_object( $post_type );

 if ( ! $post_type_object )
         wp_die( __( 'Invalid post type' ) );

 if ( ! current_user_can( $post_type_object->cap->edit_posts ) ) {
         wp_die(
                 '<h1>' . __( 'Cheatin’ uh?' ) . '</h1>' .
                 '<p>' . __( 'You are not allowed to edit posts in this
 post type.' ) . '</p>',
                 403
         );
 }

 $wp_list_table = _get_list_table('WP_Posts_List_Table');
 $pagenum = $wp_list_table->get_pagenum();

 // Back-compat for viewing comments of an entry
 foreach ( array( 'p', 'attachment_id', 'page_id' ) as $_redirect ) {
         if ( ! empty( $_REQUEST[ $_redirect ] ) ) {
                 wp_redirect( admin_url( 'edit-comments.php?p=' . absint(
 $_REQUEST[ $_redirect ] ) ) );
                 exit;
         }
 }
 unset( $_redirect );

 if ( 'post' != $post_type ) {
         $parent_file = "edit.php?post_type=$post_type";
         $submenu_file = "edit.php?post_type=$post_type";
         $post_new_file = "post-new.php?post_type=$post_type";
 } else {
         $parent_file = 'edit.php';
         $submenu_file = 'edit.php';
         $post_new_file = 'post-new.php';
 }

 $doaction = $wp_list_table->current_action();

 if ( $doaction ) {
         check_admin_referer('bulk-posts');

         $sendback = remove_query_arg( array('trashed', 'untrashed',
 'deleted', 'locked', 'ids'), wp_get_referer() );
         if ( ! $sendback )
                 $sendback = admin_url( $parent_file );
         $sendback = add_query_arg( 'paged', $pagenum, $sendback );
         if ( strpos($sendback, 'post.php') !== false )
                 $sendback = admin_url($post_new_file);

         if ( 'delete_all' == $doaction ) {
                 // Prepare for deletion of all posts with a specified post
 status (i.e. Empty trash).
                 $post_status = preg_replace('/[^a-z0-9_-]+/i', '',
 $_REQUEST['post_status']);
                 // Validate the post status exists.
                 if ( get_post_status_object( $post_status ) ) {
                         $post_ids = $wpdb->get_col( $wpdb->prepare(
 "SELECT ID FROM $wpdb->posts WHERE post_type=%s AND post_status = %s",
 $post_type, $post_status ) );
                 }
                 $doaction = 'delete';
         } elseif ( isset( $_REQUEST['media'] ) ) {
                 $post_ids = $_REQUEST['media'];
         } elseif ( isset( $_REQUEST['ids'] ) ) {
                 $post_ids = explode( ',', $_REQUEST['ids'] );
         } elseif ( !empty( $_REQUEST['post'] ) ) {
                 $post_ids = array_map('intval', $_REQUEST['post']);
         }

         if ( !isset( $post_ids ) ) {
                 wp_redirect( $sendback );
                 exit;
         }

         switch ( $doaction ) {
                 case 'trash':
                         $trashed = $locked = 0;

                         foreach ( (array) $post_ids as $post_id ) {
                                 if ( !current_user_can( 'delete_post',
 $post_id) )
                                         wp_die( __('You are not allowed to
 move this item to the Trash.') );

                                 if ( wp_check_post_lock( $post_id ) ) {
                                         $locked++;
                                         continue;
                                 }

                                 if ( !wp_trash_post($post_id) )
                                         wp_die( __('Error in moving to
 Trash.') );

                                 $trashed++;
                         }

                         $sendback = add_query_arg( array('trashed' =>
 $trashed, 'ids' => join(',', $post_ids), 'locked' => $locked ), $sendback
 );
                         break;
                 case 'untrash':
                         $untrashed = 0;
                         foreach ( (array) $post_ids as $post_id ) {
                                 if ( !current_user_can( 'delete_post',
 $post_id) )
                                         wp_die( __('You are not allowed to
 restore this item from the Trash.') );

                                 if ( !wp_untrash_post($post_id) )
                                         wp_die( __('Error in restoring
 from Trash.') );

                                 $untrashed++;
                         }
                         $sendback = add_query_arg('untrashed', $untrashed,
 $sendback);
                         break;
                 case 'delete':
                         $deleted = 0;
                         foreach ( (array) $post_ids as $post_id ) {
                                 $post_del = get_post($post_id);

                                 if ( !current_user_can( 'delete_post',
 $post_id ) )
                                         wp_die( __('You are not allowed to
 delete this item.') );

                                 if ( $post_del->post_type == 'attachment'
 ) {
                                         if ( !
 wp_delete_attachment($post_id) )
                                                 wp_die( __('Error in
 deleting.') );
                                 } else {
                                         if ( !wp_delete_post($post_id) )
                                                 wp_die( __('Error in
 deleting.') );
                                 }
                                 $deleted++;
                         }
                         $sendback = add_query_arg('deleted', $deleted,
 $sendback);
                         break;
                 case 'edit':
                         if ( isset($_REQUEST['bulk_edit']) ) {
                                 $done = bulk_edit_posts($_REQUEST);

                                 if ( is_array($done) ) {
                                         $done['updated'] = count(
 $done['updated'] );
                                         $done['skipped'] = count(
 $done['skipped'] );
                                         $done['locked'] = count(
 $done['locked'] );
                                         $sendback = add_query_arg( $done,
 $sendback );
                                 }
                         }
                         break;
         }

         $sendback = remove_query_arg( array('action', 'action2',
 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status',
 'post', 'bulk_edit', 'post_view'), $sendback );

         wp_redirect($sendback);
         exit();
 } elseif ( ! empty($_REQUEST['_wp_http_referer']) ) {
          wp_redirect( remove_query_arg( array('_wp_http_referer',
 '_wpnonce'), wp_unslash($_SERVER['REQUEST_URI']) ) );
          exit;
 }

 $wp_list_table->prepare_items();

 wp_enqueue_script('inline-edit-post');
 wp_enqueue_script('heartbeat');

 $title = $post_type_object->labels->name;

 if ( 'post' == $post_type ) {
         get_current_screen()->add_help_tab( array(
         'id'            => 'overview',
         'title'         => __('Overview'),
         'content'       =>
                 '<p>' . __('This screen provides access to all of your
 posts. You can customize the display of this screen to suit your
 workflow.') . '</p>'
         ) );
         get_current_screen()->add_help_tab( array(
         'id'            => 'screen-content',
         'title'         => __('Screen Content'),
         'content'       =>
                 '<p>' . __('You can customize the display of this
 screen’s contents in a number of ways:') . '</p>' .
                 '<ul>' .
                         '<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>' .
                         '<li>' . __('You can filter the list of posts by
 post status using the text links in the upper left to show All, Published,
 Draft, or Trashed posts. The default view is to show all posts.') .
 '</li>' .
                         '<li>' . __('You can view posts in a simple title
 list or with an excerpt using the Screen Options tab.') . '</li>' .
                         '<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>' .
                 '</ul>'
         ) );
         get_current_screen()->add_help_tab( array(
         'id'            => 'action-links',
         'title'         => __('Available Actions'),
         'content'       =>
                 '<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>' .
                 '<ul>' .
                         '<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>' .
                         '<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>' .
                         '<li>' . __('<strong>Trash</strong> removes your
 post from this list and places it in the trash, from which you can
 permanently delete it.') . '</li>' .
                         '<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>' .
                 '</ul>'
         ) );
         get_current_screen()->add_help_tab( array(
         'id'            => 'bulk-actions',
         'title'         => __('Bulk Actions'),
         'content'       =>
                 '<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>' .
                                 '<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>'
         ) );

         get_current_screen()->set_help_sidebar(
         '<p><strong>' . __('For more information:') . '</strong></p>' .
         '<p>' . __('<a href="https://codex.wordpress.org/Posts_Screen"
 target="_blank">Documentation on Managing Posts</a>') . '</p>' .
         '<p>' . __('<a href="https://wordpress.org/support/"
 target="_blank">Support Forums</a>') . '</p>'
         );

 } elseif ( 'page' == $post_type ) {
         get_current_screen()->add_help_tab( array(
         'id'            => 'overview',
         'title'         => __('Overview'),
         'content'       =>
                 '<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>'
         ) );
         get_current_screen()->add_help_tab( array(
         'id'            => 'managing-pages',
         'title'         => __('Managing Pages'),
         'content'       =>
                 '<p>' . __('Managing pages is very similar to managing
 posts, and the screens can be customized in the same way.') . '</p>' .
                 '<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>'
         ) );

         get_current_screen()->set_help_sidebar(
         '<p><strong>' . __('For more information:') . '</strong></p>' .
         '<p>' . __('<a href="https://codex.wordpress.org/Pages_Screen"
 target="_blank">Documentation on Managing Pages</a>') . '</p>' .
         '<p>' . __('<a href="https://wordpress.org/support/"
 target="_blank">Support Forums</a>') . '</p>'
         );

 }

 get_current_screen()->set_screen_reader_content( array(
         'heading_views'      =>
 $post_type_object->labels->filter_items_list,
         'heading_pagination' =>
 $post_type_object->labels->items_list_navigation,
         'heading_list'       => $post_type_object->labels->items_list,
 ) );

 add_screen_option( 'per_page', array( 'default' => 20, 'option' => 'edit_'
 . $post_type . '_per_page' ) );

 $bulk_counts = array(
         'updated'   => isset( $_REQUEST['updated'] )   ? absint(
 $_REQUEST['updated'] )   : 0,
         'locked'    => isset( $_REQUEST['locked'] )    ? absint(
 $_REQUEST['locked'] )    : 0,
         'deleted'   => isset( $_REQUEST['deleted'] )   ? absint(
 $_REQUEST['deleted'] )   : 0,
         'trashed'   => isset( $_REQUEST['trashed'] )   ? absint(
 $_REQUEST['trashed'] )   : 0,
         'untrashed' => isset( $_REQUEST['untrashed'] ) ? absint(
 $_REQUEST['untrashed'] ) : 0,
 );

 $bulk_messages = array();
 $bulk_messages['post'] = array(
         'updated'   => _n( '%s post updated.', '%s posts updated.',
 $bulk_counts['updated'] ),
         'locked'    => ( 1 == $bulk_counts['locked'] ) ? __( '1 post not
 updated, somebody is editing it.' ) :
                            _n( '%s post not updated, somebody is editing
 it.', '%s posts not updated, somebody is editing them.',
 $bulk_counts['locked'] ),
         'deleted'   => _n( '%s post permanently deleted.', '%s posts
 permanently deleted.', $bulk_counts['deleted'] ),
         'trashed'   => _n( '%s post moved to the Trash.', '%s posts moved
 to the Trash.', $bulk_counts['trashed'] ),
         'untrashed' => _n( '%s post restored from the Trash.', '%s posts
 restored from the Trash.', $bulk_counts['untrashed'] ),
 );
 $bulk_messages['page'] = array(
         'updated'   => _n( '%s page updated.', '%s pages updated.',
 $bulk_counts['updated'] ),
         'locked'    => ( 1 == $bulk_counts['locked'] ) ? __( '1 page not
 updated, somebody is editing it.' ) :
                            _n( '%s page not updated, somebody is editing
 it.', '%s pages not updated, somebody is editing them.',
 $bulk_counts['locked'] ),
         'deleted'   => _n( '%s page permanently deleted.', '%s pages
 permanently deleted.', $bulk_counts['deleted'] ),
         'trashed'   => _n( '%s page moved to the Trash.', '%s pages moved
 to the Trash.', $bulk_counts['trashed'] ),
         'untrashed' => _n( '%s page restored from the Trash.', '%s pages
 restored from the Trash.', $bulk_counts['untrashed'] ),
 );

 /**
  * Filter the bulk action updated messages.
  *
  * By default, custom post types use the messages for the 'post' post
 type.
  *
  * @since 3.7.0
  *
  * @param array $bulk_messages Arrays of messages, each keyed by the
 corresponding post type. Messages are
  *                             keyed with 'updated', 'locked', 'deleted',
 'trashed', and 'untrashed'.
  * @param array $bulk_counts   Array of item counts for each message, used
 to build internationalized strings.
  */
 $bulk_messages = apply_filters( 'bulk_post_updated_messages',
 $bulk_messages, $bulk_counts );
 $bulk_counts = array_filter( $bulk_counts );

 require_once( ABSPATH . 'wp-admin/admin-header.php' );
 ?>
 <div class="wrap">
 <h1><?php
 echo esc_html( $post_type_object->labels->name );
 if ( current_user_can( $post_type_object->cap->create_posts ) )
         echo ' <a href="' . esc_url( admin_url( $post_new_file ) ) . '"
 class="page-title-action">' . esc_html( $post_type_object->labels->add_new
 ) . '</a>';

 if ( isset( $_REQUEST['s'] ) && strlen( $_REQUEST['s'] ) ) {
         /* translators: %s: search keywords */
         printf( ' <span class="subtitle">' . __( 'Search results for
 “%s”' ) . '</span>', get_search_query() );
 }
 ?></h1>

 <?php
 // If we have a bulk message to issue:
 $messages = array();
 foreach ( $bulk_counts as $message => $count ) {
         if ( isset( $bulk_messages[ $post_type ][ $message ] ) )
                 $messages[] = sprintf( $bulk_messages[ $post_type ][
 $message ], number_format_i18n( $count ) );
         elseif ( isset( $bulk_messages['post'][ $message ] ) )
                 $messages[] = sprintf( $bulk_messages['post'][ $message ],
 number_format_i18n( $count ) );

         if ( $message == 'trashed' && isset( $_REQUEST['ids'] ) ) {
                 $ids = preg_replace( '/[^0-9,]/', '', $_REQUEST['ids'] );
                 $messages[] = '<a href="' . esc_url( wp_nonce_url(
 "edit.php?post_type=$post_type&doaction=undo&action=untrash&ids=$ids",
 "bulk-posts" ) ) . '">' . __('Undo') . '</a>';
         }
 }

 if ( $messages )
         echo '<div id="message" class="updated notice is-dismissible"><p>'
 . join( ' ', $messages ) . '</p></div>';
 unset( $messages );

 $_SERVER['REQUEST_URI'] = remove_query_arg( array( 'locked', 'skipped',
 'updated', 'deleted', 'trashed', 'untrashed' ), $_SERVER['REQUEST_URI'] );
 ?>

 <?php $wp_list_table->views(); ?>

 <form id="posts-filter" method="get">

 <?php $wp_list_table->search_box( $post_type_object->labels->search_items,
 'post' ); ?>

 <input type="hidden" name="post_status" class="post_status_page"
 value="<?php echo !empty($_REQUEST['post_status']) ?
 esc_attr($_REQUEST['post_status']) : 'all'; ?>" />
 <input type="hidden" name="post_type" class="post_type_page" value="<?php
 echo $post_type; ?>" />
 <?php if ( ! empty( $_REQUEST['show_sticky'] ) ) { ?>
 <input type="hidden" name="show_sticky" value="1" />
 <?php } ?>

 <?php $wp_list_table->display(); ?>

 </form>

 <?php
 if ( $wp_list_table->has_items() )
         $wp_list_table->inline_edit();
 ?>

 <div id="ajax-response"></div>
 <br class="clear" />
 </div>

 <?php
 include( ABSPATH . 'wp-admin/admin-footer.php' );

--
Ticket URL: <https://core.trac.wordpress.org/ticket/37506>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list