Обложка к записи Повышение производительности запросов в WordPress путем удаления post__not_in
Время для прочтения: 1 мин. 11 сек.

Повышение производительности запросов в WordPress путем удаления post__not_in

Используя post__not_in в запросах, вы делаете работу внутреннего кеша практически бесполезной, особенно, когда список исключений является большим, это очень замедляет сам запрос и, как следствие, работу сайта в целом.

Вместо такого кода, например:
$array_of_post_ids_to_skip = array(
1,
7,
29,
);
$limit = 16;
$other_posts_in_tag = get_posts( array(
'tag_id'           => $tag_id,
'posts_per_page'   => $limit,
'post__not_in'     => $array_of_post_ids_to_skip,
'suppress_filters' => false,
));

foreach ( $other_posts_in_tag as $post ){
// здесь сама логика;
}
Можно сделать такой хак – взять постов больше на размер массива $array_of_post_ids_to_skip и потом уже в цикле на PHP отбросить исключаемые посты:
$array_of_post_ids_to_skip = array(
1,
7,
29,
);
$limit = 16;
$other_posts_in_tag = get_posts( array(
'tag_id'           =>  $tag_id,
'posts_per_page'   => $limit + count( $array_of_post_ids_to_skip ),
'suppress_filters' => false,
));

foreach ( $other_posts_in_tag as $post ){
if ( in_array( $post, $array_of_post_ids_to_skip ) ){
continue;
}
// здесь сама логика;
}

Ссылки

ВКонтакте
Telegram
WhatsApp

Предыдущая запись
Следующая запись

Комментарии