Bird
Raised Fist0
Wordpressframework~20 mins

Why custom queries retrieve specific data in Wordpress - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Custom Query Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
How does WP_Query filter posts by category?
Given a WP_Query with 'category_name' set, what posts will it retrieve?
Wordpress
<?php
$query = new WP_Query(['category_name' => 'news']);
while ($query->have_posts()) {
  $query->the_post();
  the_title();
}
?>
AAll posts regardless of category
BPosts assigned to categories with names containing 'news' as substring
CPosts assigned to the 'news' category only
DPosts assigned to any category except 'news'
Attempts:
2 left
💡 Hint
Think about how 'category_name' parameter works in WP_Query.
📝 Syntax
intermediate
2:00remaining
Correct syntax for meta_query in WP_Query
Which option correctly retrieves posts where meta key 'color' equals 'blue'?
Wordpress
<?php
$args = [
  'meta_query' => [
    // Fill here
  ]
];
$query = new WP_Query($args);
?>
A['color' => 'blue']
B[['key' => 'color', 'value' => 'blue', 'compare' => '=']]
C[['meta_key' => 'color', 'meta_value' => 'blue']]
D[['key' => 'color', 'value' => ['blue'], 'compare' => 'IN']]
Attempts:
2 left
💡 Hint
meta_query expects an array of arrays with keys 'key', 'value', and 'compare'.
🔧 Debug
advanced
2:00remaining
Why does this custom query return no posts?
This WP_Query returns no posts. What is the cause?
Wordpress
<?php
$args = [
  'post_type' => 'product',
  'category_name' => 'electronics'
];
$query = new WP_Query($args);
?>
A'category_name' does not filter custom post types unless taxonomy is registered for them
BThe 'post_type' value 'product' is invalid and causes no results
CThe 'category_name' parameter must be 'category' not 'category_name'
DWP_Query cannot filter by category and post_type simultaneously
Attempts:
2 left
💡 Hint
Think about how categories relate to custom post types.
❓ state_output
advanced
2:00remaining
What posts does this complex WP_Query return?
Analyze the query and select the correct description of posts retrieved.
Wordpress
<?php
$args = [
  'post_type' => 'post',
  'meta_query' => [
    'relation' => 'OR',
    ['key' => 'color', 'value' => 'red', 'compare' => '='],
    ['key' => 'size', 'value' => 'large', 'compare' => '=']
  ],
  'category_name' => 'sale'
];
$query = new WP_Query($args);
?>
APosts in 'sale' category with meta 'color'='red' OR meta 'size'='large'
BPosts with meta 'color'='red' OR meta 'size'='large' regardless of category
CPosts in 'sale' category with both meta 'color'='red' AND meta 'size'='large'
DPosts in 'sale' category regardless of meta values
Attempts:
2 left
💡 Hint
Meta queries combine with 'relation' inside meta_query, category_name filters posts by category.
🧠 Conceptual
expert
2:00remaining
Why does WP_Query ignore 'posts_per_page' in some custom queries?
In some custom WP_Query calls, setting 'posts_per_page' has no effect. What is the most likely reason?
A'posts_per_page' only works with default post type 'post'
B'posts_per_page' must be set before 'post_type' to work
CThe 'paged' parameter must be set to enable 'posts_per_page'
DThe query uses 'nopaging' => true which overrides 'posts_per_page'
Attempts:
2 left
💡 Hint
Check if any parameter disables pagination.

Practice

(1/5)
1. What is the main reason to use a custom query in WordPress?
easy
A. To retrieve specific posts based on filters like category or author
B. To change the WordPress theme
C. To update the WordPress core automatically
D. To create new user accounts

Solution

  1. Step 1: Understand the purpose of custom queries

    Custom queries allow you to select posts based on specific rules like category, author, or date.
  2. Step 2: Compare with other options

    Changing themes, updating core, or creating users are unrelated to querying posts.
  3. Final Answer:

    To retrieve specific posts based on filters like category or author -> Option A
  4. Quick Check:

    Custom queries = filter posts [OK]
Hint: Custom queries filter posts; others change site settings [OK]
Common Mistakes:
  • Confusing custom queries with theme changes
  • Thinking custom queries update WordPress core
  • Assuming custom queries create users
2. Which of the following is the correct way to start a custom query in WordPress?
easy
A. $query = new WP_Query('category_name=news');
B. $query = new WP_Query(['category_name' => 'news']);
C. new WP_Query(['category_name' => 'news']);
D. $query = WP_Query('category=news');

Solution

  1. Step 1: Check WP_Query syntax

    WP_Query expects an array of arguments inside new WP_Query([...]).
  2. Step 2: Identify correct array syntax

    $query = new WP_Query(['category_name' => 'news']); uses the correct PHP array syntax with key 'category_name' and value 'news'.
  3. Final Answer:

    $query = new WP_Query(['category_name' => 'news']); -> Option B
  4. Quick Check:

    Correct WP_Query syntax = $query = new WP_Query(['category_name' => 'news']); [OK]
Hint: Use new WP_Query with array args in brackets [OK]
Common Mistakes:
  • Passing query as string instead of array
  • Missing 'new' keyword before WP_Query
  • Using wrong argument keys like 'category'
3. Given this code snippet, what posts will the custom query retrieve?
$args = ['author' => 5, 'posts_per_page' => 3];
$query = new WP_Query($args);
while ($query->have_posts()) {
  $query->the_post();
  echo get_the_title() . '
'; }
medium
A. The latest 3 posts by author with ID 5
B. All posts except those by author 5
C. 3 random posts from any author
D. Posts from author 5 but unlimited number

Solution

  1. Step 1: Analyze query arguments

    The 'author' => 5 limits posts to author ID 5, 'posts_per_page' => 3 limits to 3 posts.
  2. Step 2: Understand loop output

    The loop prints titles of these 3 posts by author 5.
  3. Final Answer:

    The latest 3 posts by author with ID 5 -> Option A
  4. Quick Check:

    Author 5 + 3 posts = The latest 3 posts by author with ID 5 [OK]
Hint: Author ID and posts_per_page limit results [OK]
Common Mistakes:
  • Ignoring posts_per_page limit
  • Confusing author filter as exclusion
  • Assuming random posts without filter
4. What is wrong with this custom query code snippet?
$args = ['category_name' => 'news'];
$query = new WP_Query($args);
while ($query->have_posts()) {
  $query->the_post();
  echo get_the_title() . '
'; }
medium
A. The WP_Query object is not created correctly
B. The category_name argument is invalid
C. The loop will never run because have_posts() is missing
D. It does not reset post data after the loop

Solution

  1. Step 1: Check query and loop correctness

    The query and loop syntax are correct and will run.
  2. Step 2: Identify missing reset

    After a custom query loop, you must call wp_reset_postdata() to restore global post data.
  3. Final Answer:

    It does not reset post data after the loop -> Option D
  4. Quick Check:

    Missing wp_reset_postdata() = It does not reset post data after the loop [OK]
Hint: Always reset post data after custom query loops [OK]
Common Mistakes:
  • Forgetting wp_reset_postdata() after loop
  • Thinking category_name is invalid
  • Assuming have_posts() is missing
5. You want to retrieve posts from category 'events' published after January 1, 2023, and only those with a custom field 'featured' set to 'yes'. Which WP_Query arguments array will achieve this?
hard
A. {'category_name' => 'events', 'date_query' => [['before' => '2023-01-01']], 'meta_query' => [['key' => 'featured', 'value' => 'yes']] }
B. {'category' => 'events', 'date' => '2023-01-01', 'meta_key' => 'featured', 'meta_value' => 'yes'}
C. {'category_name' => 'events', 'date_query' => [['after' => '2023-01-01']], 'meta_query' => [['key' => 'featured', 'value' => 'yes']]}
D. {'category_name' => 'events', 'date_query' => [['after' => '2023-01-01']], 'meta_key' => 'featured', 'meta_value' => 'no'}

Solution

  1. Step 1: Check category and date filters

    'category_name' => 'events' and 'date_query' with 'after' => '2023-01-01' correctly filter posts after that date.
  2. Step 2: Verify custom field filter

    'meta_query' with key 'featured' and value 'yes' filters posts with that custom field set.
  3. Step 3: Compare options

    {'category_name' => 'events', 'date_query' => [['after' => '2023-01-01']], 'meta_query' => [['key' => 'featured', 'value' => 'yes']]} uses correct keys and nested arrays for date_query and meta_query. Others have wrong keys or values.
  4. Final Answer:

    {'category_name' => 'events', 'date_query' => [['after' => '2023-01-01']], 'meta_query' => [['key' => 'featured', 'value' => 'yes']]} -> Option C
  5. Quick Check:

    Correct filters + meta_query = {'category_name' => 'events', 'date_query' => [['after' => '2023-01-01']], 'meta_query' => [['key' => 'featured', 'value' => 'yes']]} [OK]
Hint: Use date_query and meta_query arrays for complex filters [OK]
Common Mistakes:
  • Using 'category' instead of 'category_name'
  • Wrong date_query keys like 'before' instead of 'after'
  • Confusing meta_key/meta_value with meta_query array
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