Поддержка Проблемы и решения Не подгружает комменты (отзывы)

  • Всем привет.
    Есть такой код, который отображает все отзывы под постами, при нажатии на ПОКАЗАТЬ БОЛЬШЕ подгружает еще более ранние:

                                            <?php
                                            $reviews_per_page = 5;
                                            $total_args =  array(
                                                'type' => 'mjob_review',
                                                'post_id' => $mjob_post->ID,
                                                'paginate' => 'load',
                                                'order' => 'DESC',
                                                'orderby' => 'date',
                                            );
     
                                            $query_args = wp_parse_args(array(
                                                'number' => $reviews_per_page,
                                                'page' => 1
                                            ), $total_args);
     
                                            // Get reviews
                                            $review_obj = MJE_Review::get_instance();
                                            $reviews = $review_obj->fetch($query_args);
                                            $reviews = $reviews['data'];
                                            $review_data = array();
     
                                            // Get total reviews
                                            $total_reviews = count(get_comments($total_args));
                                            // Get review pages
                                            $review_pages  =   ceil($total_reviews/$query_args['number']);
                                            $query_args['total'] = $review_pages;
     
                                            if(!empty($reviews)):
                                                foreach($reviews as $key => $value) {
                                                    $review_data[] = $value;
                                                    ?>
                                                    <li id="review-<?php echo $value->comment_ID; ?>" class="review-item clearfix">
                                                        <div class="image-avatar">
                                                            <?php echo $value->avatar_user; ?>
                                                        </div>
                                                        <div class="profile-viewer">
                                                            <a href="<?php echo $value->author_data->author_url; ?>" class="name-author">
                                                                <?php echo $value->author_data->display_name; ?>
                                                            </a>
                                                            <p class="review-time"><?php echo $value->date_ago; ?></p>
                                                            <div class="rate-it star" data-score="<?php echo $value->et_rate; ?>"></div>
                                                            <div class="commnet-content"><?php echo $value->comment_content;  ?></div>
                                                        </div>
                                                    </li>
                                                    <?php
                                                }
     
                                            endif; ?>
                                        </ul>
                                        <div class="paginations-wrapper" >
                                            <?php
                                            if($review_pages > 1) {
                                                ae_comments_pagination($review_pages, $paged, $query_args);
                                            }
                                            ?>
                                        </div>
                                        <?php echo '<script type="json/data" class="review-data" > ' . json_encode($review_data) . '</script>'; ?>

    Приложил функцию:

    function ae_user_pagination ($query_args = array(), $total, $current = '', $echo = true ) {
        $str_paginate =  '';
        $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
        if(!empty($query_args)) {
            if(isset($query_args['paged']) ){
                if($paged == 1){
                    $paged = $query_args['paged'];
                }
                $query_args['offset'] = $total * ($paged - 1);
            }
            $str_paginate .= '<script type="application/json" class="ae_query">'. json_encode($query_args) . '</script>';
        }
        $str_paginate .= '<div class="paginations" >';
        if(!isset($query_args['paginate']) || (isset($query_args['paginate']) && $query_args['paginate'] == 'page')) {
            $big = 999999999; // need an unlikely integer
            $str_paginate .=  paginate_links( array(
                'base'      => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
                'format'    => '?paged=%#%',
                'current'   => max( 1, ($current) ? $current : $paged ),
                'total'     => $total,
                'next_text' => '<i class="fa fa-angle-double-right"></i>',
                'prev_text' => '<i class="fa fa-angle-double-left"></i>',
            ) );
        }else {
            if($total > $current ) {
                $text = 'load more';
                if(!et_load_mobile()) $text = (isset($query_args['text'])) ? $query_args['text'] : __("Load more", 'enginethemes');
                $str_paginate .=  '<a id="'.$query_args['type'].'-inview" class="inview load-more-post" >'. $text .'</a>';
            }
        }
     
        $str_paginate .=  '</div>';
     
        if($echo)
            echo $str_paginate;
        else
            return $str_paginate;
    }
    endif;

    Почему -то не подгружает, показывает только 5 последних, в чем может быть дело? Все в коде складно.

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • rsl89, привет.

    показывает только 5 последних, в чем может быть дело?

    $reviews_per_page = 5; вроде логично, хотя не очень понятно что именно он не подгружает, если видите 5 последних отзывов. Нет пагинации?

    $reviews_per_page = 5; вроде логично, хотя не очень понятно что именно он не подгружает, если видите 5 последних отзывов.

    тут все понятно, да он покажет 5 последних комментов/отзывов, но при нажатии на кнопку ПОКАЗАТЬ БОЛЬШЕ должны подгрузиться другие, но они не грузятся, остаются только те 5 последних

    Всем привет. Ранее прикрепил не верную функцию.
    Прикладываю верную:

    function ae_comments_pagination( $total, $current = '', $query_args = array()) {
    
        if(!empty($query_args)) {
            echo '<script type="application/json" class="ae_query">'. json_encode($query_args) . '</script>';
        }
        // don not use paginate or load more
        if(!isset($query_args['paginate']) || !$query_args['paginate'] ) return;
        // render paginate
        echo '<div class="paginations">';
        if( $query_args['paginate'] == 'page') { // paging
    
            $big = 999999999; // need an unlikely integer
            echo paginate_links( array(
                'base'      => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
                'format'    => '?paged=%#%',
                'current'   => max( 1, ($current) ? $current : get_query_var('paged') ),
                'total'     => $total,
                'next_text' => '<i class="fa fa-angle-double-right"></i>',
                'prev_text' => '<i class="fa fa-angle-double-left"></i>',
            ) );
        }else { // load more
            if($total > $current ) {
                $text = (isset($query_args['text'])) ? $query_args['text'] : '';
                if(!et_load_mobile() && !$text ){
                     $text = __("Load more", 'enginethemes');
                }
                echo '<a id="'.$query_args['type'].'-inview" class="inview load-more-post" >'. $text .'</a>';
            }
        }
    
        echo '</div>';
    }
    endif;

    ‘post_id’ => $mjob_post->ID, показывает null, оно и верно раньше этот код был приспособлен для отображения комментов/отзывов только в посте, а я его хочу приспособить для отображения ВСЕХ отзывов на посты юзера

    я так понимаю нужно в ‘post_id’ => $mjob_post->ID, поместить все id посты юзера?
    Может быть в этом причина не подгрузки всех комментов при нажатии на кнопку показать все?

    Кстати, если $reviews_per_page = 5; увеличивать, например сделать 6, то комментарии отображаются 6, тут все работает.

    • Ответ изменён 3 недели, 5 дней назад пользователем rsl89.

    предположим комменты не подгружкаются из-за того что[b] post_id’ => $mjob_post->ID[/b], null
    тогда туда нужно поместить все ID постов пользователя, значит ‘post_id’ => $mjob_post->ID, это должен быть некий массив, как его собрать и как перебрать потом? foreach?

Просмотр 4 ответов — с 1 по 4 (всего 4)