Подгрузка постов аяксом в вордпрессе

Итак, решил сей вопрос. Как имплементировать в мою тему:

  1.  в functions.php пихаем
    //бесконечная подгрузка
    function true_load_posts(){
    $args = unserialize(stripslashes($_POST['query']));
    $args['paged'] = $_POST['page'] + 1; // следующая страница
    $args['post_status'] = 'publish';
    $q = new WP_Query($args);
    if( $q->have_posts() ):
    while($q->have_posts()): $q->the_post();
    ?>
    <?php
    $thepostlink = '<a href="'. get_permalink() . '" title="' . the_title_attribute('echo=0') . '">';
    ?>
    <?php do_action( 'bp_before_blog_post' ) ?>
    <!-- POST START -->
    <article <?php post_class($oddpost); ?> id="post-<?php the_ID(); ?>">
    <?php
    if( wp_is_mobile() ) { $postimg = 'full'; } else { $postimg = 'medium'; }
    echo dez_get_featured_post_image("<div class='post-thumb in-archive'>".$thepostlink, "</a></div>", 300, 300, "alignleft img-is-". $postimg, $postimg, dez_get_singular_cat('false'), the_title_attribute('echo=0'), false);
    ?>
    <div class="post-right">
    <h2 class="post-title entry-title"><a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
    <?php get_template_part( 'lib/templates/post-meta' ); ?>
    <?php do_action( 'bp_before_post_content' ); ?>
    <div class="post-content">
    <div class="entry-content"><?php the_excerpt ('<!--noindex-->Перейти к полной статье...') ?>
    <?php if($excerpt_moretext != 'disable') { ?>
    <span class="entry-content feat-content"> <noindex><a href="<?php the_permalink(); ?>">читать дальше ></a></noindex></span><?php } ?></div>
    </div>
    <?php do_action( 'bp_after_post_content' ); ?>
    </div>
    </article>
    <?php
    endwhile;
    endif;
    wp_reset_postdata();
    die();
    }

    add_action('wp_ajax_loadmore', 'true_load_posts');
    add_action('wp_ajax_nopriv_loadmore', 'true_load_posts');

    function true_loadmore_scripts() {
    wp_enqueue_script('jquery'); // скорее всего он уже будет подключен, это на всякий случай
    wp_enqueue_script( 'true_loadmore', get_stylesheet_directory_uri() . '/loadmore.js', array('jquery') );
    }

    add_action( 'wp_enqueue_scripts', 'true_loadmore_scripts' );
    //end

  2. Создаем файл loadmore.js и заливаем его в корень темы
  3. В темплейте paginate.php такое вставляем:
    <?php if ( $wp_query->max_num_pages > 1 ) : ?>
    <script id="true_loadmore">
    var ajaxurl = '<?php echo site_url() ?>/wp-admin/admin-ajax.php';
    var true_posts = '<?php echo serialize($wp_query->query_vars); ?>';
    var current_page = <?php echo (get_query_var('paged')) ? get_query_var('paged') : 1; ?>;
    </script>
    <?php endif; ?>
  4. перед этим из functions можно убрать код от wp-kama

Осталось теперь через htaccess убрать страницы типа site.com/page/2 и вообще будет красота

Добавить комментарий