wp_edit_posts_query() – Run the wp query to fetch the posts for listing on the edit posts page

You appear to be a bot. Output may be restricted

Description

Runs the query to fetch the posts for listing on the edit posts page.

Usage

$array = wp_edit_posts_query( $q );

Parameters

$q
( array|false ) optional – Optional. Array of query variables to use to build the query. Defaults to the $_GET superglobal.

Returns

array

Source

File name: wordpress/wp-admin/includes/post.php
Lines:

1 to 92 of 92
function wp_edit_posts_query( $q = false ) {
  if ( false === $q ) {
    $q = $_GET;
  }
  $q['m']     = isset( $q['m'] ) ? (int) $q['m'] : 0;
  $q['cat']   = isset( $q['cat'] ) ? (int) $q['cat'] : 0;
  $post_stati = get_post_stati();

  if ( isset( $q['post_type'] ) && in_array( $q['post_type'], get_post_types(), true ) ) {
    $post_type = $q['post_type'];
  } else {
    $post_type = 'post';
  }

  $avail_post_stati = get_available_post_statuses( $post_type );
  $post_status      = '';
  $perm             = '';

  if ( isset( $q['post_status'] ) && in_array( $q['post_status'], $post_stati, true ) ) {
    $post_status = $q['post_status'];
    $perm        = 'readable';
  }

  $orderby = '';

  if ( isset( $q['orderby'] ) ) {
    $orderby = $q['orderby'];
  } elseif ( isset( $q['post_status'] ) && in_array( $q['post_status'], array( 'pending', 'draft' ), true ) ) {
    $orderby = 'modified';
  }

  $order = '';

  if ( isset( $q['order'] ) ) {
    $order = $q['order'];
  } elseif ( isset( $q['post_status'] ) && 'pending' === $q['post_status'] ) {
    $order = 'ASC';
  }

  $per_page       = "edit_{$post_type}_per_page";
  $posts_per_page = (int) get_user_option( $per_page );
  if ( empty( $posts_per_page ) || $posts_per_page < 1 ) {
    $posts_per_page = 20;
  }

  
/**
 * Filters the number of items per page to show for a specific 'per_page' type.
 *
 * The dynamic portion of the hook name, `$post_type`, refers to the post type.
 *
 * Possible hook names include:
 *
 *  - `edit_post_per_page`
 *  - `edit_page_per_page`
 *  - `edit_attachment_per_page`
 *
 * @since 3.0.0
 *
 * @param int $posts_per_page Number of posts to display per page for the given post
 *                            type. Default 20.
 */
  $posts_per_page = apply_filters( "edit_{$post_type}_per_page", $posts_per_page );

  
/**
 * Filters the number of posts displayed per page when specifically listing "posts".
 *
 * @since 2.8.0
 *
 * @param int    $posts_per_page Number of posts to be displayed. Default 20.
 * @param string $post_type      The post type.
 */
  $posts_per_page = apply_filters( 'edit_posts_per_page', $posts_per_page, $post_type );

  $query = compact( 'post_type', 'post_status', 'perm', 'order', 'orderby', 'posts_per_page' );

  // Hierarchical types require special args.
  if ( is_post_type_hierarchical( $post_type ) && empty( $orderby ) ) {
    $query['orderby']                = 'menu_order title';
    $query['order']                  = 'asc';
    $query['posts_per_page']         = -1;
    $query['posts_per_archive_page'] = -1;
    $query['fields']                 = 'id=>parent';
  }

  if ( ! empty( $q['show_sticky'] ) ) {
    $query['post__in'] = (array) get_option( 'sticky_posts' );
  }

  wp( $query );

  return $avail_post_stati;
}
 

 View on GitHub View on Trac