Как реализовать поиск с 3 сайтов в мультисайтинге с пагинацией Wordpress?

Всем привет, уважаемое сообщество, есть 3 сайта, созданных с помощью мультисайтинга Wordpress.
Задача: реализовать поиск новостей с 3 сайтов (условия: 1) первые записи должны идти с текущего сайта, 2) должно выводится по 10 записей, если их больше, то появляется пагинация)
Проблема: не могу понять, как всё это совместить вместе в один запрос, чтобы правильно формировать пагинацию...
Прошу Вашей компетентной помощи. Заранее спасибо
<?php

											if ( get_query_var('paged') ) {
												$paged = get_query_var('paged');
											} elseif ( get_query_var('page') ) {
												$paged = get_query_var('page');
											} else {
												$paged = 1;
											}

											?>
											
											<?php
											$have_posts_array = array();
											$sites = get_last_updated();
											if( ! empty( $_GET['s'] ) ) {
												$keywords = $_GET['s'];
											}
?>
<?php

											//restore_current_blog();
											$search_posts_result = array();
											$abs = 2;
											$flag = false;
											usort( $sites, 'glenbrook_site_sort_cb' );
											//print_r( $sites );
											foreach( $sites as $site ):
												//if( $current_site_id == $site['blog_id'] ) continue;
												switch_to_blog( $site['blog_id'] );
												//if( $abs > 0 ) {
													$search_posts = new WP_Query(
														array(
															'post_type' => 'post',
															'posts_per_page' => $abs,
															'paged' => $paged,
															's' => $keywords
														)
													);
													if( $search_posts->have_posts() ) {
														$have_posts_array[] = true;
														$search_posts->current_site_id = $site['blog_id'];
														$search_posts_result[] = $search_posts;
														$abs -= $search_posts->post_count;
													}
												//}
												restore_current_blog();
											endforeach;
											echo '<pre>';
											print_r( $search_posts_result );
											echo '</pre>';
											?>

											<?php foreach( $search_posts_result as $search_posts ): ?>

											<?php switch_to_blog( $search_posts->current_site_id ); ?>

											<?php if( $search_posts->have_posts() ) : while ( $search_posts->have_posts() ) : $search_posts->the_post(); ?>
											<?php
												$category = get_the_category();
												//var_dump( $category );
												$category = $category[0]->cat_name;
											?>
											
											<article class="article article_theme_default article_theme_search">
												<p class="category category_size_small category_square category_square_pine-green category_square-size_small article__category"><?php echo $category; ?></p>
												<h4 class="heading heading_h4 article__heading article__heading_size_small">
													<a href="<?php the_permalink(); ?>">
														<?php the_title(); ?>
													</a>
												</h4>
												<p class="article__short-description">
													<?php get_the_content(); ?>
												</p>
											</article>

											<?php endwhile; ?>
											<?php wp_reset_postdata(); ?>
											<?php endif; ?>
											<?php endforeach; ?>
											<?php
											echo '<pre>';
											//print_r( $search_posts );
											echo '</pre>';
											?>
											<?php if( empty( $have_posts_array ) ): ?>
												<p>Posts not found</p>
											<?php endif; ?>
											<?php restore_current_blog(); ?>
  • Вопрос задан
  • 299 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Fetur
В карман за ответом не полезу
Такс, что я могу сказать. Я не разрабатываю под этой CMS, но вижу для вас решение.
Раз вы имеете доступ к трём базам, то логичней всего положить все посты в одну корзину, это снимет как минимум три проблемы:
1) Ваш будущий или текущий ведущий тех.лид не увидит запросы в цикле и не оторвёт вам руки.
2) Не надо будет ломать голову как строить пагинацию
3) Ускориться работа сайта.

И простите, что это за дичь?
$abs = 2;
$flag = false;
$abs -= $search_posts->post_count;

Если вы так строите пагинацию, то так её никто не строит))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы