How to implement pagination on a custom WP_Query Ajax

后端 未结 1 2014
一向
一向 2020-12-13 05:17

I want to paginate my WordPress posts in a custom loop with Ajax, so when I click on load more button posts will appear.

My code:



        
相关标签:
1条回答
  • 2020-12-13 06:02

    The Load More button needs to send a ajax request to the server and the returned data can be added to the existent content using jQuery or plain javascript. Assuming your using jQuery this would starter code.

    Custom Ajax Handler (Client-side)

    <a href="#">Load More</a>
    

    Change to:

    <a id="more_posts" href="#">Load More</a>
    

    Javascript: - Put this at the bottom of the file.

    //</script type="text/javascript">
    
        var ajaxUrl = "<?php echo admin_url('admin-ajax.php')?>";
        var page = 1; // What page we are on.
        var ppp = 3; // Post per page
    
        $("#more_posts").on("click",function(){ // When btn is pressed.
            $("#more_posts").attr("disabled",true); // Disable the button, temp.
            $.post(ajaxUrl, {
                action:"more_post_ajax",
                offset: (page * ppp) + 1,
                ppp: ppp
            }).success(function(posts){
                page++;
                $(".name_of_posts_class").append(posts); // CHANGE THIS!
                $("#more_posts").attr("disabled",false);
            });
    
       });
    
    //</script>
    

    Custom Ajax Handler (Server-side) PHP - Put this in the functions.php file.

    function more_post_ajax(){
        $offset = $_POST["offset"];
        $ppp = $_POST["ppp"];
        header("Content-Type: text/html");
    
        $args = array(
            'post_type' => 'post',
            'posts_per_page' => $ppp,
            'cat' => 1,
            'offset' => $offset,
        );
    
        $loop = new WP_Query($args);
        while ($loop->have_posts()) { $loop->the_post(); 
           the_content();
        }
    
        exit; 
    }
    
    add_action('wp_ajax_nopriv_more_post_ajax', 'more_post_ajax'); 
    add_action('wp_ajax_more_post_ajax', 'more_post_ajax');
    
    0 讨论(0)
提交回复
热议问题