Created
June 9, 2016 18:24
-
-
Save AlphaBlossom/8ba1577ecdd06a9dd3429e3a94118c1b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function init_load_posts() { | |
// Grid Loop Query Args | |
add_action( 'pre_get_posts', 'be_grid_loop_query_args' ); | |
} | |
add_action( 'init', 'init_load_posts' ); | |
function be_grid_loop_query_args( $query ) { | |
//if( $query->is_main_query() && !is_admin() ) { | |
// First Page | |
$page = $_POST['page']; | |
if( ! $page ) { | |
$query->set( 'posts_per_page', 7 ); | |
// Other Pages | |
} else { | |
$query->set( 'posts_per_page', 2 ); | |
// Offset is posts on first page + posts on internal pages * ( current page - 2 ) | |
// example $args['offset'] = 5 + 2 * ( $page - 2) - 5 posts on home page, 2 posts on subsequent pages | |
$query->set( 'offset', 7 + 2 * ( $page - 2 ) ); | |
} | |
//} | |
} | |
/** | |
* Javascript for Load More | |
* | |
*/ | |
function be_load_more_js() { | |
global $wp_query; | |
$args = array( | |
'nonce' => wp_create_nonce( 'be-load-more-nonce' ), | |
'url' => admin_url( 'admin-ajax.php' ), | |
'query' => $wp_query->query, | |
); | |
wp_enqueue_script( 'be-load-more', get_stylesheet_directory_uri() . '/js/load-more.js', array( 'jquery' ), '1.0', true ); | |
wp_localize_script( 'be-load-more', 'beloadmore', $args ); | |
} | |
add_action( 'wp_enqueue_scripts', 'be_load_more_js', 10 ); | |
/** | |
* AJAX Load More | |
* | |
*/ | |
/* | |
* Use your query here. Remember that if you make a call to $custom->the_post() | |
* you'll need to reset the post data after the loop by calling wp_reset_postdata(). | |
*/ | |
function be_ajax_load_more() { | |
check_ajax_referer( 'be-load-more-nonce', 'nonce' ); | |
$args = isset( $_POST['query'] ) ? $_POST['query'] : array(); | |
$args['post_type'] = isset( $args['post_type'] ) ? $args['post_type'] : 'post'; | |
$args['paged'] = $_POST['page']; | |
$args['post_status'] = 'publish'; | |
$loop = new WP_Query( $args ); | |
if( $loop->have_posts() ): while( $loop->have_posts() ): $loop->the_post(); | |
echo '<h1>' . the_title() . '</h1>'; | |
echo '<p>' . $args['paged'] . '</p>'; | |
endwhile; endif; wp_reset_postdata(); | |
$data = ob_get_clean(); | |
wp_send_json_success( $data ); | |
} | |
add_action( 'wp_ajax_be_ajax_load_more', 'be_ajax_load_more' ); | |
add_action( 'wp_ajax_nopriv_be_ajax_load_more', 'be_ajax_load_more' ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment