Setting up pagination for your custom post type can be easily done on WordPress. I recently came across a situation where I had to output a list of posts for a custom posts types on a WordPress page. The following code snippet example will output a list of posts based on your custom post type ($my_custom_post_type).

$my_custom_post_type = "some_custom_post";
$loop = new WP_Query(array('post_type' => $my_custom_event_type, 'posts_per_page' => 10, 'paged' => get_query_var('paged') ? get_query_var('paged') : 1 )); 
while ( $loop->have_posts() ) : $loop->the_post(); 
       echo the_title(); 
 endwhile;

    $big = 999999999; // need an unlikely integer
    echo paginate_links( array(
    'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
    'format' => '?paged=%#%',
    'current' => max( 1, get_query_var('paged') ),
    'total' => $loop->max_num_pages
) );

Now on a side note, lets say on your custom post type you have meta data that you want to query against. For example you have a “start date” meta field that you want to query against. Here is sample example querying against a meta field on your custom post:

 

$my_custom_post_type = "some_custom_post";
$loop = new WP_Query(array(
                                'post_type' => $my_custom_post_type,
                                'posts_per_page' => 10,
                                'paged' => get_query_var('paged') ? get_query_var('paged') : 1 ,
                                'meta_query' => array( // WordPress has all the results, now, return only the events after today's date
                                    array(
                                        'key' => 'custom_meta_end_date_field', // Check the end meta date field
                                        'value' => date("Y-m-d"), // Set today's date (note the similar format)
                                        'compare' => ">=", // Return the ones greater than today's date --> custom_meta_end_date_field >= date("Y-m-d") 
                                        'type' => 'STRING' // Let WordPress know we're working with strings
                                        )
                                    )
                                 )    
                        );