Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Загрузка JS комментов или отзывов под постом
Форумы портала PHP.SU » » Вопросы новичков » Загрузка JS комментов или отзывов под постом

Страниц (1): [1]
 

1. rasl89 - 06 Июля, 2020 - 22:16:47 - перейти к сообщению
Всем привет.
Есть код, который отображает все отзывы под постами, при нажатии на ПОКАЗАТЬ БОЛЬШЕ подгружает еще более ранние:
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. function ae_user_pagination ($query_args = array(), $total, $current = '', $echo = true ) {
  2.     $str_paginate =  '';
  3.     $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
  4.     if(!empty($query_args)) {
  5.         if(isset($query_args['paged']) ){
  6.             if($paged == 1){
  7.                 $paged = $query_args['paged'];
  8.             }
  9.             $query_args['offset'] = $total * ($paged - 1);
  10.         }
  11.         $str_paginate .= '<script type="application/json" class="ae_query">'. json_encode($query_args) . '</script>';
  12.     }
  13.     $str_paginate .= '<div class="paginations" >';
  14.     if(!isset($query_args['paginate']) || (isset($query_args['paginate']) && $query_args['paginate'] == 'page')) {
  15.         $big = 999999999; // need an unlikely integer
  16.         $str_paginate .=  paginate_links( array(
  17.             'base'      => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
  18.             'format'    => '?paged=%#%',
  19.             'current'   => max( 1, ($current) ? $current : $paged ),
  20.             'total'     => $total,
  21.             'next_text' => '<i class="fa fa-angle-double-right"></i>',
  22.             'prev_text' => '<i class="fa fa-angle-double-left"></i>',
  23.         ) );
  24.     }else {
  25.         if($total > $current ) {
  26.             $text = 'load more';
  27.             if(!et_load_mobile()) $text = (isset($query_args['text'])) ? $query_args['text'] : __("Load more", 'enginethemes');
  28.             $str_paginate .=  '<a id="'.$query_args['type'].'-inview" class="inview load-more-post" >'. $text .'</a>';
  29.         }
  30.     }
  31.  
  32.     $str_paginate .=  '</div>';
  33.  
  34.     if($echo)
  35.         echo $str_paginate;
  36.     else
  37.         return $str_paginate;
  38. }
  39. endif;


Почему -то не подгружает, показывает только 5 последних, в чем может быть дело? Все в коде складно вроде бы.
2. rasl89 - 13 Июля, 2020 - 23:52:03 - перейти к сообщению
Всем привет. Ранее прикрепил не верную функцию.
Прикладываю верную:
Спойлер (Отобразить)


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

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

Кстати, если $reviews_per_page = 5; увеличивать, например сделать 6, то комментарии отображаются 6, тут все работает.
3. Vladimir Kheifets - 14 Июля, 2020 - 07:38:25 - перейти к сообщению
rasl89 пишет:
Всем привет. Ранее прикрепил не верную функцию.
Прикладываю верную:
Спойлер (Отобразить)


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

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

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

Добрый день!
Может быть Вам пригодится такое решение на чистом JS и РНР.
Что напишите в ForExampLoader.php, то и отобразится - комментарии, картики, видео т.е. любой HTML контент.
Спойлер (Отобразить)
Удачи!
4. rasl89 - 14 Июля, 2020 - 18:30:11 - перейти к сообщению
Vladimir Kheifets пишет:
rasl89 пишет:
Всем привет. Ранее прикрепил не верную функцию.
Прикладываю верную:
Спойлер (Отобразить)


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

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

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

Добрый день!
Может быть Вам пригодится такое решение на чистом JS и РНР.
Что напишите в ForExampLoader.php, то и отобразится - комментарии, картики, видео т.е. любой HTML контент.
Спойлер (Отобразить)
Удачи!


Спасибо большое! Протестю!

А если все-таки рассматривать мой код:

PHP:
скопировать код в буфер обмена
  1.   $reviews_per_page = 5;
  2.                                         $total_args =  array(
  3.                                             'type' => 'mjob_review',
  4.                                             'post_id' => $mjob_post->ID,
  5.                                             'paginate' => 'load',
  6.                                             'order' => 'DESC',
  7.                                             'orderby' => 'date',
  8.                                         );
  9.  
  10.                                         $query_args = wp_parse_args(array(
  11.                                             'number' => $reviews_per_page,
  12.                                             'page' => 1
  13.                                         ), $total_args);
  14.  
  15.                                         // Get reviews
  16.                                         $review_obj = MJE_Review::get_instance();
  17.                                         $reviews = $review_obj->fetch($query_args);
  18.                                         $reviews = $reviews['data'];
  19.                                         $review_data = array();
  20.  
  21.                                         // Get total reviews
  22.                                         $total_reviews = count(get_comments($total_args));
  23.                                         // Get review pages
  24.                                         $review_pages  =   ceil($total_reviews/$query_args['number']);
  25.                                         $query_args['total'] = $review_pages;
  26.  
  27.                                         if(!empty($reviews)):
  28.                                             foreach($reviews as $key => $value) {
  29.                                                 $review_data[] = $value;


предположим комменты не подгружкаются из-за того что post_id' => $mjob_post->ID, null
тогда туда нужно поместить все ID постов пользователя, значит 'post_id' => $mjob_post->ID, это должен быть некий массив, как его собрать и как перебрать потом? foreach?
5. rasl89 - 24 Июля, 2020 - 07:43:35 - перейти к сообщению
Коллеги, есть класс отвечающий за подгрузку, может быть это поможет разъяснить проблему:

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.     }

 

Powered by ExBB FM 1.0 RC1