Добрый вечер,
Я делаю такой вот объёмный запрос, в результате чего получаю 1300 обращений к базе, что крайне много. А мне на этой же странице нужно сделать ещё 2 примерно таких же запроса:)
Уверен что можно тащить и больше инфы из WP, не напрягая его. Вопрос в том, как мой запрос можно оптимизировать, дабы нагрузка на бд стала менее ощутимой.
Надеюсь мой запрос будет понятен, старался его расписать для простоты восприятия:
$args = array( // аргументы основного запроса, далее все циклы будут получать инфу по этим 100 постам
'post_type' => 'songs',
'posts_per_page' => '100',
);
$my_songs = new WP_Query($args);
while ($my_songs->have_posts()) : $my_songs->the_post();
$my_terms = get_the_terms( $post->ID, 'bands' ); // для каждого поста получаем термин таксономии
foreach ($my_terms as $my_term) {
//здесь подрубаемся к API одного ресурса и тянем инфу по $my_term->name для какждого из 100 постов
}
// the_excerpt();
$var = wp_get_post_terms( $post->ID, 'bands' ); // получаем данные по термину, относящемуся к каждому посту, для того чтобы позже получить ссылку на пост, который так же принадлежит к этой таксономии
$artist_id = $var[0]->term_id;
$artist = $var[0]->name;
$varr = wp_get_post_terms( $post->ID, 'albums' ); // то же самое по другой таксономии
$album = $varr[0]->name;
$album_id = $varr[0]->term_id;
$artist_args = array( // аргументы для запроса, которым будем получать пост относящийся к той таксономии что из наш пост из 100
'post_type' => 'artist',
'tax_query' => array(
array(
'taxonomy' => 'bands',
'field' => 'id',
'terms' => $artist_id
)
)
);
$artists = get_posts($artist_args);
foreach($artists as $post);
$artist_url = get_permalink(); // та самая ссылка на пост
$album_args = array( // аргументы для запроса, которым будем получать пост относящийся к той таксономии что из наш пост из 100
'post_type' => 'album',
'tax_query' => array(
array(
'taxonomy' => 'albums',
'field' => 'id',
'terms' => $album_id
)
)
);
$albums = get_posts($album_args);
foreach($albums as $post);
$album_url = get_permalink(); // ещё одна та самая ссылка на пост
// здесь вывод пары полученных переменных
endwhile;
П.С.
$var = wp_get_post_terms( $post->ID, 'bands' )
и
$my_terms = get_the_terms( $post->ID, 'bands' )
казалось бы можно сделать единожды получив ту же инфу, но у меня не получилось - только так работает