Get all posts, regardless of status

You should write your request like this (“post_status” instead of “status”):

$my_query = new WP_Query('post_type=testimonials&posts_per_page=-1&post_status=any');

All available post_statuses are:

Default value is ‘publish’, but if the user is logged in, ‘private’ is added.

Public custom statuses are also included by default. And if the query is run in an admin context (administration area or AJAX call), protected statuses are added too. By default protected statuses are ‘future’, ‘draft’ and ‘pending’.

  • ‘publish’ – a published post or page. ‘pending’ – post is pending review.
  • ‘draft’ – a post in draft status.
  • ‘auto-draft’ – a newly created post, with no content.
  • ‘future’ – a post to publish in the future.
  • ‘private’ – not visible to users who are not logged in.
  • ‘inherit’ – a revision.
  • ‘trash’ – post is in trashbin (available since Version 2.9).
  • ‘any’ – retrieves any status
    except those from post statuses with ‘exclude_from_search’ set to
    true (i.e. trash and auto-draft).

You can specify several statuses in one request:

$query = new WP_Query( array(
    array( 'post_status' => array( 'pending', 'draft', 'future' ) )
) );