За последние 24 часа нас посетили 9300 программистов и 461 робот. Сейчас ищут 99 программистов ...

Подправить подгрузку комментов php/js

Тема в разделе "PHP для профи", создана пользователем rasl89, 24 июл 2020.

Метки:
  1. rasl89

    rasl89 Новичок

    С нами с:
    22 мар 2020
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Россия, Уфа
    Всем привет.
    Сайт на WP.
    Есть такой код, который отображает все отзывы под постами, при нажатии на ПОКАЗАТЬ БОЛЬШЕ подгружает еще более ранние:
    PHP:
    1.                                         <?php
    2.                                         $reviews_per_page = 5;
    3.                                         $total_args =  array(
    4.                                             'type' => 'mjob_review',
    5.                                             'post_id' => $mjob_post->ID,
    6.                                             'paginate' => 'load',
    7.                                             'order' => 'DESC',
    8.                                             'orderby' => 'date',
    9.                                         );
    10.  
    11.                                         $query_args = wp_parse_args(array(
    12.                                             'number' => $reviews_per_page,
    13.                                             'page' => 1
    14.                                         ), $total_args);
    15.  
    16.                                         // Get reviews
    17.                                         $review_obj = MJE_Review::get_instance();
    18.                                         $reviews = $review_obj->fetch($query_args);
    19.                                         $reviews = $reviews['data'];
    20.                                         $review_data = array();
    21.  
    22.                                         // Get total reviews
    23.                                         $total_reviews = count(get_comments($total_args));
    24.                                         // Get review pages
    25.                                         $review_pages  =   ceil($total_reviews/$query_args['number']);
    26.                                         $query_args['total'] = $review_pages;
    27.  
    28.                                         if(!empty($reviews)):
    29.                                             foreach($reviews as $key => $value) {
    30.                                                 $review_data[] = $value;
    31.                                                 ?>
    32.                                                 <li id="review-<?php echo $value->comment_ID; ?>" class="review-item clearfix">
    33.                                                     <div class="image-avatar">
    34.                                                         <?php echo $value->avatar_user; ?>
    35.                                                     </div>
    36.                                                     <div class="profile-viewer">
    37.                                                         <a href="<?php echo $value->author_data->author_url; ?>" class="name-author">
    38.                                                             <?php echo $value->author_data->display_name; ?>
    39.                                                         </a>
    40.                                                         <p class="review-time"><?php echo $value->date_ago; ?></p>
    41.                                                         <div class="rate-it star" data-score="<?php echo $value->et_rate; ?>"></div>
    42.                                                         <div class="commnet-content"><?php echo $value->comment_content;  ?></div>
    43.                                                     </div>
    44.                                                 </li>
    45.                                                 <?php
    46.                                             }
    47.  
    48.                                         endif; ?>
    49.                                     </ul>
    50.                                     <div class="paginations-wrapper" >
    51.                                         <?php
    52.                                         if($review_pages > 1) {
    53.                                             ae_comments_pagination($review_pages, $paged, $query_args);
    54.                                         }
    55.                                         ?>
    56.                                     </div>
    57.                                     <?php echo '<script type="json/data" class="review-data" > ' . json_encode($review_data) . '</script>'; ?>
    Функция для подгрузки комментов:
    PHP:
    1.         public function fetch_reviews() {
    2.    
    3.             $request = $_REQUEST;
    4.             $page = $request['page'];
    5.             $query_args = $request['query'];
    6.             $query_args['page'] = $page;
    7.    
    8.             $review_obj = MJE_Review::get_instance();
    9.             $reviews = $review_obj->fetch($query_args);
    10.             $reviews = $reviews['data'];
    11.    
    12.             if(!empty($reviews)) {
    13.                 wp_send_json(array(
    14.                     'success' => true,
    15.                     'data' => $reviews,
    16.                     'max_num_pages' => $query_args['total']
    17.                 ));
    18.             } else {
    19.                 wp_send_json(array(
    20.                     'success' => false
    21.                 ));
    22.             }
    23.         }
    В общем задача такая, я взял код для отображения комментов к посту пользователя и поставил его в профиль пользователя, и хочу чтобы он отображал ВСЕ комменты ко ВСЕМ постам пользователя.
    Для этого тут:
    PHP:
    1. $total_args =  array(
    2.                                             'type' => 'mjob_review',
    3.                                             'post_id' => $mjob_post->ID,
    4.                                             'paginate' => 'load',
    5.                                             'order' => 'DESC',
    6.                                             'orderby' => 'date',
    7.                                         );
    'post_id' => $mjob_post->ID, должно быть не один ID поста а все, все посты я собрал в массив, но как передать и интегрировать их сюда 'post_id' => $mjob_post->ID?
    Сейчас по факту все комменты отображается но кнопка подгрузки не работает, комменты не подгружает.
    Если $reviews_per_page = 5; менять на значение больше, то коменты отображатся чтолько сколько устанавливаешь, значть скрипт знает откужа брать комменты, но не подгружает по кнопке ПОКАЗАТЬ БОЛЬШЕ.
    Опробовал 100000 вариантов, подгрузка не работает. У кого есть мысли?
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    6.555
    Симпатии:
    1.040
    Адрес:
    Лень
    var_dump () + log file + check error + F12 (Moz ctrl+shift+E)


    опробовал 1 раз понять "почему" ?
     
  3. rasl89

    rasl89 Новичок

    С нами с:
    22 мар 2020
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Россия, Уфа
    самой собой, я ведь и пишу что не получается сделать, сюда 'post_id' => $mjob_post->ID интегрировать массив, чтобы при подгрузке комментов учитывались все комменты юзера.

    Пробовал разные вариации от простых до сложных:
    например так
    PHP:
    1. 'post_id' => implode(',', $postsID),
    или менять массив:
    PHP:
    1. $args = [
    2.     'post_type' => 'mjob_post',
    3.     'post_status' => array( 'publish', 'unpause' ),
    4.     'posts_per_page' => $reviews_per_page,
    5.     'paged' => 1,
    6.     'order' => 'DESC',
    7.     'orderby' => 'date',
    8.     'meta_query' => array(
    9.         array(
    10.         'key' => 'post_id',
    11.         'value' => $postsID,
    12.         'compare' => 'IN',
    13.         )
    14.     )
    15. ];
    $postsID - массив с ИД постов