Ваш код работать не будет, функции
next_posts_link()
и
previous_posts_link()
работают только с глобальным запросом и не будут работать с кастомным
WP_Query()
Если вас не устраивает ограничение на кол-во постов в настройках, вы можете изменить это значение для отдельных запросов на хуке
pre_get_posts
add_action( 'pre_get_posts', 'wpz_home_pagesize', 1 );
function wpz_home_pagesize( $query ) {
// Выходим, если это админ-панель или не основной запрос.
if ( is_admin() || !$query->is_main_query() )
return;
// Выводим только 5 постов на главной странице
if ( is_home() ) {
$query->set( 'posts_per_page', 5 );
}
}
Вывести блок с дополнительной информацией после каждого пятого поста можно с помощью простого счетчика
$i = 1;
while ( have_posts() ) :
the_post();
get_template_part( 'template-parts/content', get_post_format() );
// после каждого пятого поста выводим баннер
if ( is_int( $i++ / 5 ) ) {
get_template_part( 'template-parts/content', 'offer' );
}
endwhile;