Have you read this thread? Display all posts starting with given letter?
This wouldn’t be simple to do with WP_Query and that’s unfortunate because that would help preserve pagination.
// Rules
$args = ['post_type'=>'post','orderby'=>'name'];
// The Query
$query1 = new WP_Query( $args );
// The Loop
while ( $query1->have_posts() ) {
$query1->the_post();
echo '<li>' . get_the_title() . '</li>';
}
You could use wpdb
global $wpdb;
$results = $wpdb->get_results( "SELECT ID FROM wp_posts WHERE post_title LIKE 'B%';", ARRAY_A );
& then use WP_Query
// Rules
$args = ['post_type'=>'post','post__in'=>$results];
// The Query
$query1 = new WP_Query( $args );
// The Loop
while ( $query1->have_posts() ) {
$query1->the_post();
echo '<li>' . get_the_title() . '</li>';
}
pre_get_posts() is another good one to use when doing this kind of thing.