You can add a load more button using a variety of WordPress plugins, just pick one and follow the instructions. I like this one: https://wordpress.org/plugins/ajax-load-more-anything/
Yes, it is possible to add it without using the REST API but the REST API is a great use for this type of activity. To provide a concrete example I would need to see the exact page you are working on but the basic approach (NOT using the REST API) is as follows: Add some jQuery code to every page that:
- interrupts the click event
- calls the page via Ajax
- parses out the additional posts
- appends the posts to the end of the current list
So, given the following HTML:
<section id="blogposts">
<article>(blog post HTML)</article>
</section>
<a id="loadmore" href="https://wordpress.stackexchange.com/questions/336561/(href to next page of results)">Load More</a>
You might have jQuery that looks kind of like this (kind of because there are a lot more details you’ll need to manage to make this bullet proof – this example just loads the next page of posts):
$("#loadmore").on("click", function(e){
e.preventDefault
var nextPage;
$.ajax({
type: 'GET',
url: nextPage.attr('href'),
success: function(data) {
if (0 == data.length) {
// nothing more to show
} else {
var frag = $.parseHTML(data)).children('#blogposts');
$('#blogposts').append($(frag));
}
},
error: function(data) {
nextPage.text('Error loading more… Click to try again');
}
});
});
The above script isn’t perfect but should give you an idea how this can be done without using the REST API.