Оформление первой записи в цикле wordpress?
1. Зачем вам custom_query, изменения в основной запрос делайте через хук pre_get_posts
2. Проверяйте первый пост по индексу current_post объекта $wp_query// В functions.php, модифицируем основной запрос:
function modify_my_query( $query ) {
    if ( $query->is_main_query() && ! $query->is_admin() ) {
        $query->set( 'posts_per_page', 24 );
    }
}
add_action( 'pre_get_posts', 'modify_my_query' );

// В самом шаблоне, для изоляции первого поста в стандартном цикле:
if ( have_posts() ) :

    while ( have_posts() ) : the_post();

        if ( $wp_query->current_post == 0 ) : // Это первый пост в цикле

            // вот тут произвольный код для вывода/оформления первого поста

        else : // Это все остальные посты

            // а тут - для всех остальных

        endif;

    endwhile;

endif;
И пагинация будет работать, и граблей никаких нет.
//не хватает аргумента paged
$args = array (
            'post_type'              => array( 'post' ),
            'post_status'            => array( 'publish' ),
            'posts_per_page'			=> 24,

          );
//Вместо этого должно быть так
$paged = get_query_var('paged', 1);//Получаем номер страницы
$args = array (
            'post_type'              => array( 'post' ),
            'post_status'            => array( 'publish' ),
            'posts_per_page'			=> 24,
            'paged' => $paged
          );