A. Missing default value for $paged, may cause page 0
B. Using wp_reset_query() instead of wp_reset_postdata()
C. Incorrect post type specified
D. Posts per page should be set to 5 for pagination
Solution
Step 1: Check $paged initialization
$paged is set directly from get_query_var('paged') without defaulting to 1, so if no page is set, it may be 0 or empty.
Step 2: Evaluate other parts
While wp_reset_postdata() is preferred after custom queries, the main error affecting pagination is missing default for $paged.
Final Answer:
Missing default value for $paged, may cause page 0 -> Option A
Quick Check:
Always default $paged to 1 if empty [OK]
Hint: Always default $paged to 1 to avoid page 0 [OK]
Common Mistakes:
Not setting default page number
Confusing wp_reset_query() with wp_reset_postdata()
Assuming posts per page must be 5
5. You want to create a paginated list of 'product' posts showing 8 per page. Which code snippet correctly sets up the custom query and pagination, including resetting post data?
hard
A. $paged = get_query_var('paged') ?: 1;
$args = [
'post_type' => 'product',
'posts_per_page' => 8,
'paged' => $paged
];
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
the_title();
}
}
wp_reset_postdata();
B. $paged = 1;
$args = [
'post_type' => 'product',
'posts_per_page' => 8
];
$query = new WP_Query($args);
while ($query->have_posts()) {
$query->the_post();
the_title();
}
wp_reset_query();
C. $paged = get_query_var('page') ?: 1;
$args = [
'post_type' => 'product',
'posts_per_page' => 8,
'paged' => $paged
];
$query = new WP_Query($args);
while ($query->have_posts()) {
$query->the_post();
the_title();
}
wp_reset_postdata();
D. $paged = get_query_var('paged') ?: 1;
$args = [
'post_type' => 'product',
'posts_per_page' => 8,
'page' => $paged
];
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
the_title();
}
}
wp_reset_postdata();
Solution
Step 1: Correctly get current page number
Use get_query_var('paged') ?: 1 to get current page or default to 1.
Step 2: Set query args and reset post data
Use 'paged' => $paged (not 'page'), and call wp_reset_postdata() after the loop.
Step 3: Verify loop structure
Check that the loop uses have_posts() and the_post() correctly.
Final Answer:
Code snippet D correctly sets up pagination and resets post data -> Option A
Quick Check:
Use paged param and wp_reset_postdata() [OK]
Hint: Use paged param and reset post data after loop [OK]
Common Mistakes:
Using 'page' instead of 'paged' in query args
Not resetting post data after custom query
Hardcoding page number to 1 disables pagination
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.