Есть функция
wp_get_recent_posts()
для получения последних записей сайта. По умолчанию функция получает 10 последних записей включая черновики, запланированные и записи на модерации, это можно изменить с помощью дополнительных аргументов
function wpb_exclude_from_main_query( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
$args = array(
'numberposts' => 1,
'post_type' => 'post',
'post_status' => 'publish',
);
$recent_posts = wp_get_recent_posts( $args );
if ( is_array( $recent_posts ) && ! empty( $recent_posts ) ) {
$exclude_ids = array();
foreach ( $recent_posts as $key => $recent_post ) {
$exclude_ids[] = $recent_post['ID'];
}
$query->set( 'post__not_in', $exclude_ids );
}
}
}
add_action( 'pre_get_posts', 'wpb_exclude_from_main_query' );