Claudio,
Para usar a paginação com AJAX você precisa:
Enfileirar um script no WordPress que vai chamar a função AJAX e o próprio AJAX
Carregar o offset de posts no script para pular os posts que já apareceram
Adicionar a função que será chamada pelo AJAX
Então para começar no functions.php do seu tema:
add_action( 'wp_enqueue_scripts', 'meus_scripts', 100 );
function meus_scripts() {
wp_enqueue_script(
'meus_scripts',
get_template_directory_uri() . '/js/scripts.js?ver=1.0', //esse é o arquivo .js do seu tema que vai conter todos os scripts (pode ser diferente no seu tema)
array( 'jquery' ),
null,
false
);
wp_localize_script(
'meus_scripts',
'WPaAjax',
array(
'ajaxurl' => admin_url( 'admin-ajax.php' )
)
);
}
No scripts.js do seu tema você adiciona o código que vai chamar o AJAX, e adiciona uma variável offset, contando os posts que já foram carregados, que vai ser chamada depois pelo WP_Query.
jQuery(document).ready(function($){
$('#maisposts').click(function(e){
e.preventDefault();
var offset = $('#posts').length; //div com os posts
$.post(
WPaAjax.ajaxurl,
{
action : 'mais_posts',
offset : offset
},
function( response ) {
$('#posts').append( response );
}
);
});
});
Agora tudo que você precisa fazer é adicionar a função que vai processar a chamada AJAX de acordo com o javascript. Para isso você precisa usar a ação wp_ajax
add_action('wp_ajax_mais_posts', 'mais_posts');
add_action('wp_ajax_nopriv_mais_posts', 'mais_posts');
function mais_posts(){
global $wp_query;
$offset = $_POST['offset'];
$args = array(
'offset' => $offset,
'posts_per_page' => 15
);
$wp_query = new WP_Query( $args );
get_template_part( 'content', 'post' );
exit;
}
Tentei usar um exemplo geral para você pode adaptar ao seu tema.