Bird
Raised Fist0
Wordpressframework~5 mins

Custom post type queries in Wordpress - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a custom post type in WordPress?
A custom post type is a content type you create to organize and display different kinds of content beyond the default posts and pages, like portfolios, products, or events.
Click to reveal answer
beginner
Which WordPress function is used to query custom post types?
The <code>WP_Query</code> class is used to query custom post types by setting the <code>post_type</code> parameter to the custom post type's name.
Click to reveal answer
intermediate
How do you query multiple custom post types at once?
You pass an array of post type names to the post_type parameter in WP_Query, like ['book', 'movie'].
Click to reveal answer
intermediate
What parameter do you use to order custom post type query results by a custom field?
Use meta_key to specify the custom field and orderby set to meta_value or meta_value_num in WP_Query.
Click to reveal answer
advanced
Why should you use pre_get_posts action when modifying main queries for custom post types?
Because it lets you safely modify the main query before it runs, ensuring your custom post type content shows up correctly without breaking other queries.
Click to reveal answer
Which parameter in WP_Query specifies the custom post type to query?
Apost_type
Bpost_status
Cpost_category
Dpost_author
How do you query both 'book' and 'movie' custom post types together?
Apost_type => 'book,movie'
Bpost_type => 'all'
Cpost_type => 'book|movie'
Dpost_type => ['book', 'movie']
Which WP_Query parameter orders results by a custom field's numeric value?
Aorderby => 'title'
Borderby => 'meta_value_num'
Corderby => 'date'
Dorderby => 'author'
What hook lets you modify the main query before it runs?
Ainit
Bwp_head
Cpre_get_posts
Dtemplate_redirect
If you want to show only published custom posts, which parameter do you set?
Apost_status => 'publish'
Bpost_status => 'draft'
Cpost_status => 'pending'
Dpost_status => 'private'
Explain how to create a query for a custom post type called 'event' that orders results by a custom date field.
Think about how to tell WP_Query which post type and custom field to use for sorting.
You got /5 concepts.
    Describe why and how you would use the pre_get_posts hook when working with custom post type queries.
    Consider how to change what WordPress shows on archive or home pages.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using post_type in a WP_Query in WordPress?
      easy
      A. To fetch posts of a specific custom post type
      B. To change the theme of the website
      C. To update the WordPress core version
      D. To delete all posts from the database

      Solution

      1. Step 1: Understand WP_Query parameters

        The post_type parameter in WP_Query specifies which type of posts to fetch, such as posts, pages, or custom types.
      2. Step 2: Identify the purpose of post_type

        It filters the query to only return posts of the given type, allowing you to get custom content.
      3. Final Answer:

        To fetch posts of a specific custom post type -> Option A
      4. Quick Check:

        post_type filters posts by type = A [OK]
      Hint: Remember: post_type selects which content type to get [OK]
      Common Mistakes:
      • Confusing post_type with theme or plugin settings
      • Thinking post_type deletes or updates posts
      • Using post_type to change site appearance
      2. Which of the following is the correct way to query a custom post type named 'product' using WP_Query?
      easy
      A. new WP_Query(array('post_type' => 'product'));
      B. new WP_Query('post_type' = 'product');
      C. WP_Query('post_type' => 'product');
      D. new WP_Query(array('posttype' => 'product'));

      Solution

      1. Step 1: Check WP_Query syntax

        The correct syntax uses new WP_Query(array('post_type' => 'product')) with an associative array and the correct key post_type.
      2. Step 2: Identify errors in other options

        new WP_Query('post_type' = 'product'); uses wrong assignment syntax, C misses new keyword, and D misspells post_type.
      3. Final Answer:

        new WP_Query(array('post_type' => 'product')); -> Option A
      4. Quick Check:

        Correct array syntax with 'post_type' key = B [OK]
      Hint: Use new WP_Query with array and 'post_type' key [OK]
      Common Mistakes:
      • Using '=' instead of '=>' in array
      • Omitting 'new' keyword
      • Misspelling 'post_type' as 'posttype'
      3. Given the following code, what will be the output if there are 3 'event' posts?
       $query = new WP_Query(array('post_type' => 'event'));
      if ($query->have_posts()) {
        while ($query->have_posts()) {
          $query->the_post();
          echo get_the_title() . ', ';
        }
      }
      wp_reset_postdata();
      medium
      A. Syntax error due to missing semicolons
      B. No output because 'event' is not a default post type
      C. Only the first event post title printed
      D. Titles of all 3 event posts separated by commas

      Solution

      1. Step 1: Understand WP_Query loop behavior

        The loop runs while have_posts() returns true, iterating over all posts of type 'event'.
      2. Step 2: Output titles of all posts

        Inside the loop, get_the_title() prints each post's title followed by a comma, so all 3 titles appear separated by commas.
      3. Final Answer:

        Titles of all 3 event posts separated by commas -> Option D
      4. Quick Check:

        Loop prints all titles = C [OK]
      Hint: Loop with have_posts() prints all matching posts [OK]
      Common Mistakes:
      • Assuming only default post types work
      • Thinking loop prints only one post
      • Confusing syntax errors with correct code
      4. Identify the error in this custom post type query code:
       $args = array('post_type' => 'book');
      $query = WP_Query($args);
      if ($query->have_posts()) {
        while ($query->have_posts()) {
          $query->the_post();
          the_title();
        }
      }
      wp_reset_postdata();
      medium
      A. Using the_title() inside the loop is invalid
      B. Incorrect post_type name 'book'
      C. Missing 'new' keyword before WP_Query instantiation
      D. Missing wp_reset_postdata() call

      Solution

      1. Step 1: Check WP_Query instantiation

        WP_Query must be instantiated with the new keyword. The code misses new before WP_Query($args).
      2. Step 2: Verify other parts

        The post_type 'book' is valid if registered, wp_reset_postdata() is present, and the_title() is valid inside the loop.
      3. Final Answer:

        Missing 'new' keyword before WP_Query instantiation -> Option C
      4. Quick Check:

        WP_Query needs 'new' keyword = D [OK]
      Hint: Always use 'new' when creating WP_Query objects [OK]
      Common Mistakes:
      • Forgetting 'new' keyword
      • Assuming post_type names are always wrong
      • Thinking wp_reset_postdata() is optional
      5. You want to query a custom post type 'movie' but only show posts published in 2023. Which WP_Query argument array correctly achieves this?
      hard
      A. { 'post_type' => 'movie', 'year' => 2023 }
      B. { 'post_type' => 'movie', 'date_query' => array(array('year' => 2023)) }
      C. { 'post_type' => 'movie', 'meta_key' => 'year', 'meta_value' => 2023 }
      D. { 'post_type' => 'movie', 'post_status' => '2023' }

      Solution

      1. Step 1: Understand filtering by date in WP_Query

        To filter posts by year, use the date_query parameter with an array specifying the year.
      2. Step 2: Evaluate each option

        { 'post_type' => 'movie', 'date_query' => array(array('year' => 2023)) } correctly uses date_query with year 2023. { 'post_type' => 'movie', 'year' => 2023 } uses an invalid 'year' key. { 'post_type' => 'movie', 'meta_key' => 'year', 'meta_value' => 2023 } filters by meta fields, not post date. { 'post_type' => 'movie', 'post_status' => '2023' } misuses post_status.
      3. Final Answer:

        { 'post_type' => 'movie', 'date_query' => array(array('year' => 2023)) } -> Option B
      4. Quick Check:

        Use date_query for year filtering = A [OK]
      Hint: Use date_query array to filter posts by year [OK]
      Common Mistakes:
      • Using 'year' directly instead of date_query
      • Confusing meta_key with post date
      • Misusing post_status for date filtering
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard