2nd page displaying the exact same posts as my first page (minus the very first post)

Solution 1

It looks like this might be what is happening to your template: http://codex.wordpress.org/Pagination#Adding_the_.22paged.22_parameter_to_a_query

Basically what it’s saying is that the second page doesn’t realize it’s the second page because the “paged” parameter is missing.

I’ve just copied directly from the wordpress documentation, which says you should do this:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('posts_per_page=3&paged=' . $paged); 
?>

So in your code, you might try to replace this line:

<?php global $query_string; query_posts( $query_string . '&cat=-1470'); ?>

With the following:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
global $query_string;
query_posts($query_string . '&cat=-1470&posts_per_page=3&paged=' . $paged); 
?>

You should replace ‘3’ with however many posts per page you would like.

Solution 2

The first solution may not be the best way to accomplish what you want, but it should get the job done. For a better way, you can look into using the pre_get_posts filter to exclude a certain category, and this should not have the side-effect of breaking pagination. Here is a reference to that: http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts#Exclude_categories_on_your_main_page

That code is pretty straightforward; you should be able to simply put it into functions.php in your theme, and you’re done:

function exclude_category( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'cat', '-1,-1347' );
    }
}
add_action( 'pre_get_posts', 'exclude_category' );

So, there you have it, two possible solutions to the problem. I’d try the second one first…