posts_per_page showing 16 elements instead of 3

Your query might be picking up sticky posts. To ignore them, try this: $args = array( ‘meta_query’ => array( array( ‘key’ => ‘featured_posts’, ‘compare’ => ‘==’, ‘value’ => ‘0’ ) ), ‘post_type’ => ‘post’, // Changed ‘3’ to 3, since WP_Query expects an int. ‘posts_per_page’ => 3, // Ignore the sticky posts. ‘ignore_sticky_posts’ => true, … Read more

Extra filtering on post query

Rather than trying to manage access at the various places people might be able to see the posts, it’s probably safest to create custom user roles. For example, WP autogenerates RSS feeds, so if you’re only covering the single-post and archive views, you may not be covering the feeds themselves. If you create custom roles, … Read more