WordPress Ajax加载分类下的文章功能

本文介绍了如何在WordPress中添加Ajax功能,通过修改functions.php文件创建加载分类文章的回调函数,然后在前端使用JavaScript发起Ajax请求,动态加载指定分类的文章到页面中,最后展示了接收响应并更新页面内容的代码示例。
摘要由CSDN通过智能技术生成

首先,我们要在 WordPress 后台添加一个新的 Ajax 功能,在 functions.php 中添加如下代码:

// 添加 Ajax 加载分类下文章功能
add_action('wp_ajax_load_category_posts','load_category_posts_callback');
add_action('wp_ajax_nopriv_load_category_posts','load_category_posts_callback');

function load_category_posts_callback(){
  // 获取分类ID
  $cat_id = $_POST['cat_id'];
  // 设置参数
  $args = array(
    'cat' => $cat_id,
    'orderby' => 'date',
    'order' => 'DESC',
    'posts_per_page' => -1
  );
  $query = new WP_Query( $args );
  // 开始循环
  if ( $query->have_posts() ) :
    while ( $query->have_posts() ) : $query->the_post();
      // 这里填写文章模板
      echo '<article>';
      echo '<h3><a href="'.get_permalink().'">'.get_the_title().'</a></h3>';
      echo '<div class="entry-content">'.get_the_excerpt().'</div>';
      echo '</article>';
    endwhile;
  endif;
  // 重置post数据
  wp_reset_postdata();
  // 结束 Ajax 功能
  die();
}

接下来,我们要在需要加载文章的页面(可以是首页或者某个分类下的页面)中添加 JavaScript 代码,用来发起 Ajax 请求:

// 加载文章
jQuery(document).ready(function($){
  // 获取分类ID
  var cat_id = '1'; // 填写你要加载的分类ID
  // 设置Ajax参数
  var data = {
    'action': 'load_category_posts',
    'cat_id': cat_id
  };
  // Ajax请求
  $.post(ajaxurl, data, function(response) {
    // 将文章内容添加到页面中
    $('.post-list').html(response);
  });
});

最后,我们要在页面添加一个用来显示文章内容的容器:

<div class="post-list"></div>

以上内容通过ChatGPT生成

Ajax 代码:



<script type="text/javascript">
    jQuery(document).ready(function($){
        $('.category').on('click', function(){
            var catId = $(this).data('category');
            
            $.ajax({
                url: '<?php echo admin_url('admin-ajax.php'); ?>',
                data: {
                    action: 'get_category_posts',
                    catid: catId
                },
                dataType: 'json',
                success: function(data){
                    if( data ) {
                        // do something with the data here
                        $('#category-posts').html(data);
                    }
                }
            });
        });
    });
</script>


<?php

// Register the ajax action
add_action('wp_ajax_get_category_posts', 'get_category_posts');
add_action('wp_ajax_nopriv_get_category_posts', 'get_category_posts');

function get_category_posts() {
    $catId = $_GET['catid'];
    
    $args = array(
        'posts_per_page' => -1,
        'cat' => $catId
    );
    
    $posts = get_posts($args);
    
    if( $posts ) {
        $html = '<ul>';
        foreach( $posts as $post ) {
            $html .= '<li>' . $post->post_title . '</li>';
        }
        $html .= '</ul>';
        
        echo json_encode($html);
    }
    
    die();
}

?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现分页Ajax无限加载功能,可以按照以下步骤进行: 1. 在WordPress主题中创建一个新的页面模板,命名为“ajax-pagination.php”(或者其他你喜欢的名字)。 2. 在模板中添加需要分页的内容。 3. 在模板中添加一个按钮或链接,用于加载更多内容。 4. 使用jQuery编写Ajax代码,将按钮或链接与模板中的内容连接起来。 5. 在functions.php文件中添加一个新的函数,用于处理Ajax请求。 6. 编写一个新的WordPress查询,用于获取下一页的内容。 7. 将查询结果返回给Ajax请求,并将其添加到页面上。 以下是一个简单的示例代码,演示如何实现分页Ajax无限加载功能: 在ajax-pagination.php文件中,添加以下代码: ``` <div id="content"> <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'post_type' => 'post', 'posts_per_page' => 3, 'paged' => $paged ); $query = new WP_Query($args); if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); // 输出文章内容 endwhile; endif; ?> </div> <div id="load-more"> <a href="#">加载更多</a> </div> ``` 在JavaScript文件中,添加以下代码: ``` jQuery(document).ready(function($) { $('#load-more a').click(function() { var button = $(this), data = { 'action': 'load_more', 'query': loadmore_params.posts, 'page': loadmore_params.current_page }; $.ajax({ url: loadmore_params.ajaxurl, data: data, type: 'POST', beforeSend: function(xhr) { button.text('正在加载...'); }, success: function(data) { if (data) { button.text('加载更多').prev().before(data); loadmore_params.current_page++; if (loadmore_params.current_page == loadmore_params.max_page) button.remove(); } else { button.remove(); } } }); return false; }); }); ``` 在functions.php文件中,添加以下代码: ``` add_action('wp_ajax_load_more', 'load_more'); add_action('wp_ajax_nopriv_load_more', 'load_more'); function load_more() { $query = json_decode(stripslashes($_POST['query']), true); $query['paged'] = $_POST['page'] + 1; $posts = new WP_Query($query); if ($posts->have_posts()) { while ($posts->have_posts()) { $posts->the_post(); // 输出文章内容 } } die; } ``` 以上代码仅仅是一个示例,你需要根据自己的实际情况进行修改和调整。但是,这个示例可以帮助你了解如何使用WordPressAjax来实现分页Ajax无限加载功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值