• Olá pessoal.

    Estou desenvolvendo um tema e gostaria que na página de arquivos do portal, os posts fossem chamados através de Ajax para evitar refresh na página.

    Seria mais ou menos assim, eu iria limitar a quantidade posts chamados para uns 15 posts e colocar o botão para carregar mais postagens.

    Ao ser clicado, iria carregar mais posts após aqueles que já estavam na página. Não sei como chamar esse conteúdo através do Ajax no WordPress.

    Alguém sabe como posso proceder?

Visualizando 1 resposta (de um total de 1)
  • 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.

Visualizando 1 resposta (de um total de 1)
  • O tópico ‘Obter posts com Ajax’ está fechado para novas respostas.