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.
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.
Share Improve this question edited Nov 12, 2020 at 2:19 Matt asked Nov 12, 2020 at 1:52 MattMatt 1631 silver badge5 bronze badges 1 |1 Answer
Reset to default 0The 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
) );
query_posts
, instead if you want to change the query, modify it with thepre_get_posts
action, don't replace it, and if you absolutely must, use a standardWP_Query
loop instead. There are no good situations to usequery_posts
and there are always better alternatives. If you find it in a premium theme this should be considered a red flag and a warning sign of poor code quality – Tom J Nowell ♦ Commented Nov 12, 2020 at 2:31