ok, i still don’t love the idea of a second query, but you’re right it is hard to add content to the archives pages.
there were 3 problems that i found:
-
next_posts_link and previous_posts_link both echo, you need their get_ equivalents.
-
when you look up get_next_posts_link, you find that it relies on the global $wp_query… which in your case was always for the actual “page” and not for the shortcode’s query. you need to actually query_posts then and squash the original query. i hope the reset query works, but i’m not 100% sure. you’ll have to test that.
-
not sure this was a problem, but i usually see the $paged variable defined this way so i went with it.
function section_feed_shortcode( $atts ) { extract( shortcode_atts( array( 'limit' => -1, 'type' => 'post'), $atts ) ); $paged = get_query_var('paged') ? get_query_var('paged') : 1; query_posts( array ( 'posts_per_page' => $limit, 'post_type' => $type, 'order' => 'ASC', 'orderby' =>'menu_order', 'paged' => $paged ) ); $list=" "; while ( have_posts() ) { the_post(); $list .= '<article class="listing-view clearfix">' . '<div class="listing-content">' . '<h3><a href="' . get_permalink() . '">' . get_the_title() . '</a></h3>' .'<p>' . get_the_excerpt() . '</p>' . '<a href="' . get_permalink() . '">' . 'View »' . '</a>' . '</div>' . '<a class="listing-thumb" href="' . get_permalink() . '">' . get_the_post_thumbnail($page->ID, 'listing-thumb') . '<span></span></a>' . '</article>'; } return '<div class="listings clearfix">' . $list . '<div class="nav-previous">' . get_next_posts_link( __( '<span class="meta-nav">←</span> Older posts' ) ) . '</div>' . '<div class="nav-next">' . get_previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>' ) ) . '</div>' . '</div>' . wp_reset_query(); } add_shortcode( 'feed', 'section_feed_shortcode' );