首页 > 解决方案 > Wordpress 自定义帖子类型 ajax 加载更多分页

问题描述

我已经为 wordpress 中的工作职位创建了这个页面模板。如果有十多个职位可用,我想实现一个 ajax 加载更多系统。我不知道如何对结果进行分页,而且我从未在 wordpress 中实现过类似的东西。谁能帮我?

<?php get_header(); ?>

<?php if( has_post_thumbnail() ): ?>
<div class="jumbotron jumbotron-fluid page-cover">
  <div class="parallax" data-parallax-image="<?php the_post_thumbnail_url(); ?>"></div>
  <div class="container">
    <div class="row">
      <div class="col-sm-12 col-md-12 col-lg-12 text-right inner-parallax">
        <h1 class="parallax-section-title"><?php the_title(); ?></h1>
      </div>
    </div>
  </div>
  <div class="parallax-overlay"></div>
</div>
<?php endif; ?>
<div class="container-fluid content-wrapper" id="wrapper">
  <div class="row page-row-justified justify-content-center" style="padding-bottom:0;">
<?php if( have_posts() ): while( have_posts() ): the_post(); ?>
<?php the_content(); ?>
<?php endwhile; ?>
<?php endif; ?>
  </div>
<?php $careers = new WP_Query( ['post_type' => 'careers', 'posts_per_page' => 10 ] );  ?>
  <div class="row page-row-justified justify-content-center">
<?php if( $careers->have_posts() ): while( $careers->have_posts() ): $careers->the_post(); ?>
    <div class="col-sm-12 col-md-8 col-lg-8 card career-card">
      <h4 class=""><a class="career-link" data-toggle="collapse" href=".position-details" class=""><?php the_title(); ?></a></h4>
      <small class="career-date"><i class=""></i> <?php the_date('d/m/Y'); ?></small>
      <div class="row">
        <div class="col-sm-12 col-md-12 col-lg-12 position-details collapse">
          <p class="career-details text-justify"><?php echo get_the_content(); ?></p>
          <hr>
          <h4><a class="career-mail-link" href="mailto:example@demo.com?subject=<?php the_title(); ?>"><i class="fas fa-envelope"></i> <?php _e('Apply'); ?></a></h4>
        </div>
      </div>
    </div>
<?php endwhile; ?>
<?php else: ?>
  <div class="col-sm-12 col-md-8 col-lg-8">
    <p class="section-claime text-danger hide"><?php _e('No position available.'); ?></p>
  </div>
<?php endif; ?>
  </div>

</div>

<?php get_footer(); ?>

标签: phpajaxwordpress

解决方案


尝试这个

<?php
    $args= array(
        'post_type' => 'post',
        'post_status' => 'publish',
        'posts_per_page' => 10,
        'ignore_sticky_posts' => true,
        'paged' => 1
    );
    $my_posts = new WP_Query( $args );
    if ( $my_posts->have_posts() ) :
      while ( $my_posts->have_posts() ) : $my_posts->the_post();
      // Your code for post
      endwhile;
    endif;
?>
<button class="btn a loadmore_event">View More</button>

阿贾克斯

var ajaxurl = "<?php echo admin_url( 'admin-ajax.php' ); ?>";
var page = 2;
jQuery(function($) {
$('body').on('click', '.loadmore_event', function() {
    var data = {
        'action': 'load_posts_by_event',
        'page': page,
        'security': '<?php echo wp_create_nonce("load_more_posts"); ?>'
    };

    $.post(ajaxurl, data, function(response) {
        if(response != '') {
            $('your class name').append(response);
            page++;
        } else {
        }
    });
});
});

函数.php

    add_action('wp_ajax_nopriv_load_posts_by_event', 'load_posts_event');

    function load_posts_event() {
       $paged = $_POST['page'];
       $args = array(
          'post_type' => 'post',
          'post_status' => 'publish',
          'posts_per_page' => 10,
          'ignore_sticky_posts' => true,
          'paged' => $paged
      );
    $my_posts = new WP_Query( $args );
    if ( $my_posts->have_posts() ) :
       while ( $my_posts->have_posts() ) : $my_posts->the_post();
          // Your code for post
          endwhile;
        endif;
}// function closing tag


推荐阅读