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.

Was it helpful?

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
scroll top