首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义WP_Query循环中的Ajax无限滚动不工作

自定义WP_Query循环中的Ajax无限滚动不工作
EN

WordPress Development用户
提问于 2018-03-23 18:05:25
回答 1查看 1.6K关注 0票数 1

我已经为页面模板设置了一个自定义WP_Query循环。我正在通过ajax实现无限滚动方法,调用是成功的,但出于某种原因,我无法让查询像循环中的分页arg。它就是什么都拉不了。

下面是ajax操作的代码:

代码语言:javascript
复制
// AJAX Infinite Scroll
function txcap_ajax_scroll() {

    $args = isset( $_POST['query'] ) ? array_map( 'esc_attr', 
    $_POST['query'] ) : array();
    $args['post_type'] = isset( $args['post_type'] ) ? esc_attr( 
    $args['post_type'] ) : 'post';
    $args['paged'] = esc_attr( $_POST['page'] );
    $args['post_status'] = 'publish';

    ob_start();  

    $query = new WP_Query( $args );

    if ( $query->have_posts() ) {
      $post_count = 1;
      while ( $query->have_posts() ) {
        $query->the_post()
       ?>

        
            class="fdm-post fdm-standard last"
          
            class="fdm-post fdm-half-left"
          
            class="fdm-post fdm-half-right"
          
            class="fdm-post fdm-standard"
           >

          
          
          
            
              
            
            
               • 

下面是我的enqueue的代码&本地化ajax:

代码语言:javascript
复制
global $wp_query;

$args = array(
  'ajaxurl' => admin_url( 'admin-ajax.php' ),
  'query'   => $wp_query->query
);

wp_enqueue_script( 'ajax_infinite_scroll', get_stylesheet_directory_uri() . '/js/ajax_infinite_scroll.js', array('jquery'), '1.0' ,true );

wp_localize_script( 'ajax_infinite_scroll', 'ajaxinfinitescroll', $args );

以下是无限滚动的ajax处理程序。

代码语言:javascript
复制
jQuery(function($) {
$('.fdm-blog-container').append( '' );
var button = $('.fdm-blog-container .load-more');
var page = 2;
var loading = false;
var scrollHandling = {
    allow: true,
    reallow: function() {
        scrollHandling.allow = true;
    },
    delay: 400 //(milliseconds) adjust to the highest acceptable value
};

$(window).scroll(function() {
    if( ! loading && scrollHandling.allow ) {
        scrollHandling.allow = false;
        setTimeout(scrollHandling.reallow, scrollHandling.delay);
        var offset = $(button).offset().top - $(window).scrollTop();
        if ( 2000 > offset ) {
            loading = true;
            $.ajax({
                url: ajaxinfinitescroll.ajaxurl,
                type: 'post',
                data: {
                    action: 'txcap_ajax_scroll',
                    page: page,
                    query: ajaxinfinitescroll.query
                },
                success: function(result) {
                    console.log(result);
                    $('.fdm-blog-container').append( result.data );
                    $('.fdm-blog-container').append( button );
                    page = page + 1;
                    loading = false;
                },
                fail: function( xhr, textStatus, e ) {
                    console.log(xhr.responseText);
                }
            })
        }
    }
});
});

下面是我要添加无限滚动方法的主WP_Query循环(此代码在页面模板中):

代码语言:javascript
复制
                 'post',
                    'posts_per_page' => 1,
                    'paged' => $paged,
                    'post_status' => 'publish'
                );

                $query_main = new WP_Query( $args_main );

                if ( $query_main->have_posts() ) {
                    $post_count = 1;
                    while ( $query_main->have_posts() ) {

                        $query_main->the_post();

                        ?>

                        
                                class="fdm-post fdm-standard last"
                            
                                class="fdm-post fdm-half-left"
                            
                                class="fdm-post fdm-half-right"
                            
                                class="fdm-post fdm-standard"
                             >

                            
                            
                            
                                
                                    
                                
                                
                                     • 

先谢谢你。我一直把头撞在墙上!

EN

回答 1

WordPress Development用户

发布于 2018-03-26 12:38:05

您的网站有https版本吗?我问这个问题是因为我最近遇到了一个项目,它是一个可以通过http和https访问的网站。因此,我必须将它指定为ajax_url函数。因此,就你而言,我建议你尝试:

代码语言:javascript
复制
$protocol = isset( $_SERVER['HTTPS'] ) ? 'https://' : 'http://';

$args = array(
  'ajaxurl' => admin_url( 'admin-ajax.php',$protocol ),
  'query'   => $wp_query->query

在你的队列函数中。

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/298749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档