Help with query_posts function
-
21-04-2021 - |
Question
I have a paid theme that has the following function manually hard-coded. It pulls the 8 latest posts and displays them:
global $do_not_duplicate;
global $post;
query_posts( array(
'posts_per_page' => '8',
'post__not_in' => $do_not_duplicate,
'ignore_sticky_posts' => 1
) );
I have looked at this page and tried to modify the code to show posts from the news category only (category number 1):
global $do_not_duplicate;
global $post;
// Attempt 1
query_posts( array(
'cat=1',
'posts_per_page' => '8',
'post__not_in' => $do_not_duplicate,
'ignore_sticky_posts' => 1
) );
// Attempt 2
query_posts( array(
'category=1',
'posts_per_page' => '8',
'post__not_in' => $do_not_duplicate,
'ignore_sticky_posts' => 1
) );
// Attempt 3
query_posts( array(
'category' => array(1),
'posts_per_page' => '8',
'post__not_in' => $do_not_duplicate,
'ignore_sticky_posts' => 1
) );
// Attempt 4
query_posts( array(
'cat=news',
'posts_per_page' => '8',
'post__not_in' => $do_not_duplicate,
'ignore_sticky_posts' => 1
) );
Nothing worked. The same list of 8 recent posts from all categories was returned.
Solution
The query_posts()
function is almost wholly unnecessary and is discouraged in favor of WP_Query()
. That being said we can look at the WP_Query()
docs as they're almost the same.
The cat
parameter accepts either a comma separated string or integer. In this case we can use:
query_posts( array(
'cat' => 1,
'posts_per_page' => '8',
'post__not_in' => $do_not_duplicate,
'ignore_sticky_posts' => 1
) );
Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange