WP_Query::get_posts() – Retrieves an array of posts based on query variables.

You appear to be a bot. Output may be restricted

Description

Retrieves an array of posts based on query variables.

There are a few filters and actions that can be used to modify the post database query.

Usage

$WP_Post[]|int[] = WP_Query::get_posts();

Parameters

Returns

WP_Post[]|int[] Array of post objects or post IDs.

Source

File name: wordpress/wp-includes/class-wp-query.php
Lines:

101 to 200 of 1704

    if ( ! isset( $q['update_post_meta_cache'] ) ) {
      $q['update_post_meta_cache'] = true;
    }

    if ( ! isset( $q['post_type'] ) ) {
      if ( $this->WP_Query::is_search ) {
        $q['post_type'] = 'any';
      } else {
        $q['post_type'] = '';
      }
    }
    $post_type = $q['post_type'];
    if ( empty( $q['posts_per_page'] ) ) {
      $q['posts_per_page'] = get_option( 'posts_per_page' );
    }
    if ( isset( $q['showposts'] ) && $q['showposts'] ) {
      $q['showposts']      = (int) $q['showposts'];
      $q['posts_per_page'] = $q['showposts'];
    }
    if ( ( isset( $q['posts_per_archive_page'] ) && 0 != $q['posts_per_archive_page'] ) && ( $this->WP_Query::is_archive || $this->WP_Query::is_search ) ) {
      $q['posts_per_page'] = $q['posts_per_archive_page'];
    }
    if ( ! isset( $q['nopaging'] ) ) {
      if ( -1 == $q['posts_per_page'] ) {
        $q['nopaging'] = true;
      } else {
        $q['nopaging'] = false;
      }
    }

    if ( $this->WP_Query::is_feed ) {
      // This overrides 'posts_per_page'.
      if ( ! empty( $q['posts_per_rss'] ) ) {
        $q['posts_per_page'] = $q['posts_per_rss'];
      } else {
        $q['posts_per_page'] = get_option( 'posts_per_rss' );
      }
      $q['nopaging'] = false;
    }
    $q['posts_per_page'] = (int) $q['posts_per_page'];
    if ( $q['posts_per_page'] < -1 ) {
      $q['posts_per_page'] = abs( $q['posts_per_page'] );
    } elseif ( 0 == $q['posts_per_page'] ) {
      $q['posts_per_page'] = 1;
    }

    if ( ! isset( $q['comments_per_page'] ) || 0 == $q['comments_per_page'] ) {
      $q['comments_per_page'] = get_option( 'comments_per_page' );
    }

    if ( $this->WP_Query::is_home && ( empty( $this->WP_Query::query ) || 'true' === $q['preview'] ) && ( 'page' === get_option( 'show_on_front' ) ) && get_option( 'page_on_front' ) ) {
      $this->WP_Query::is_page = true;
      $this->WP_Query::is_home = false;
      $q['page_id']  = get_option( 'page_on_front' );
    }

    if ( isset( $q['page'] ) ) {
      $q['page'] = is_scalar( $q['page'] ) ? absint( trim( $q['page'], '/' ) ) : 0;
    }

    // If true, forcibly turns off SQL_CALC_FOUND_ROWS even when limits are present.
    if ( isset( $q['no_found_rows'] ) ) {
      $q['no_found_rows'] = (bool) $q['no_found_rows'];
    } else {
      $q['no_found_rows'] = false;
    }

    switch ( $q['fields'] ) {
      case 'ids':
        $fields = "{$wpdb->posts}.ID";
        break;
      case 'id=>parent':
        $fields = "{$wpdb->posts}.ID, {$wpdb->posts}.post_parent";
        break;
      default:
        $fields = "{$wpdb->posts}.*";
    }

    if ( '' !== $q['menu_order'] ) {
      $where .= " AND {$wpdb->posts}.menu_order = " . $q['menu_order'];
    }
    // The "m" parameter is meant for months but accepts datetimes of varying specificity.
    if ( $q['m'] ) {
      $where .= " AND YEAR({$wpdb->posts}.post_date)=" . substr( $q['m'], 0, 4 );
      if ( strlen( $q['m'] ) > 5 ) {
        $where .= " AND MONTH({$wpdb->posts}.post_date)=" . substr( $q['m'], 4, 2 );
      }
      if ( strlen( $q['m'] ) > 7 ) {
        $where .= " AND DAYOFMONTH({$wpdb->posts}.post_date)=" . substr( $q['m'], 6, 2 );
      }
      if ( strlen( $q['m'] ) > 9 ) {
        $where .= " AND HOUR({$wpdb->posts}.post_date)=" . substr( $q['m'], 8, 2 );
      }
      if ( strlen( $q['m'] ) > 11 ) {
        $where .= " AND MINUTE({$wpdb->posts}.post_date)=" . substr( $q['m'], 10, 2 );
      }
      if ( strlen( $q['m'] ) > 13 ) {
        $where .= " AND SECOND({$wpdb->posts}.post_date)=" . substr( $q['m'], 12, 2 );
      }
 

 View on GitHub View on Trac