Infinite Scroll(무한 스크롤)이란
페이지의 이동 없이 스크롤을 내리는 것만으로 다음 페이지의 내용을 불러오는 것을 의미합니다.
제 블로그의 프론트엔드 카테고리 등에 가보시면 라이브 데모를 확인해보실 수 있습니다.
테마 수정하기
PHP
<?php get_header(); ?>
<main id="main" class="postList<?php echo postListStyle() ?>">    <div class="gutter-sizer"></div>    <?php if ( have_posts() ) :         while ( have_posts() ) : the_post(); ?>
    <a class="link_post<?php echo checkNew(); ?>" href="<?php the_permalink() ?>">        <div class="thumbnail_wrapepr">            <img class="index_thumbnail" src="<?php                if (has_post_thumbnail()) {                    the_post_thumbnail_url('medium');                }                else {                    echo get_template_directory_uri() . "/assets/images/noimg.png";                } ?>" alt="<?php the_title(); ?>">        </div>        <div class="index_information">            <div class="tit_post"><?php the_title(); ?></div>            <time class="date"><?php echo timeFormat(); ?></time>        </div>    </a>        <?php endwhile;         else: ?>    <p class="center">죄송합니다. 아직 보여드릴 것이 없네요.</p>            <?php endif; ?>
    <div id="loading"></div></main>
<div id="paging">    <?php      echo '<div class="paginate-links">';        echo paginate_links( array(        'prev_text' => __(''),        'next_text' => __('')        ) );      echo '</div>';    ?></div>
<?php get_footer(); ?>
먼저 제 category.php 파일의 모습입니다.
주목하셔야 할 부분은 #main, #loading, #paging 입니다.
#paging에서 다음 / 이전 페이지의 주소를 받아오고, #main에 글 목록을 추가합니다.
이미지를 로딩하는 중엔 #loading을 표시해 로딩 중이란 걸 표시할 겁니다.
css
#loading {    display: none;    position: absolute;    bottom: 75px;    left: 50%;    width: 100px;    height: 100px;    background: url(assets/images/twice-loader-z.svg) center;    background-size: cover;    background-repeat: no-repeat;    transform: translateX(-50%);    z-index: 300}
#loading.reveal {    display: block}
#paging은 그냥 display: none으로 숨겨주세요.
#loading엔 위와 같은 css를 적용해뒀습니다. 본인 취향에 맞게 적절히 만드시면 됩니다.
Javascript
const loading = document.getElementById("loading");let isld, ispld;
function nextPage() {  const next = document.querySelector(".next");  if (null === next || isld === true || next.classList.contains("done")) return !1; // 로딩 하지 않아야 할 상황에 로딩하는 것 방지용  const a = next.href,      b = new XMLHttpRequest;  let c;  isld = true,  loading.classList.add(reveal),  b.open("GET", a),  b.send(null),  b.onreadystatechange = function () {      4 === b.readyState && (          c = new DOMParser().parseFromString(b.responseText, "text/html"),          history.pushState(null, null, a),          null === c.querySelector(".next") // 마지막 페이지인지 확인하기          ? (            next.classList.add("done"),            next.removeAttribute("href")          )          : (            next.href = c.querySelector(".next").href          ),          b.onload = function () {              Array.from(c.querySelectorAll(".link_post")).forEach(a => {                  a.classList.add("reveal"), main.append(a)              }),              loading.classList.remove(reveal), isld = false          }      )  }}
function prevPage() {  const prev = document.querySelector(".prev");  if (null === prev || ispld === true || prev.classList.contains("done")) return !1; // 로딩 하지 않아야 할 상황에 로딩하는 것 방지용  const a = prev.href,      b = new XMLHttpRequest;  let c;  ispld = true,  loading.classList.add(reveal),  b.open("GET", a),  b.send(null),  b.onreadystatechange = function () {      4 === b.readyState && (          c = new DOMParser().parseFromString(b.responseText, "text/html"),          null === c.querySelector(".prev") // 첫 페이지인지 확인하기          ? (            prev.classList.add("done"),            prev.removeAttribute("href")          )          : (            prev.href = c.querySelector(".prev").href          ),          b.onload = function () {              Array.from(c.querySelectorAll(".link_post")).reverse().forEach(a => { // 이전 페이지 글이니 Array 역순으로 정렬합니다                  main.prepend(a)              }),              loading.classList.remove(reveal), ispld = false, prevPage() // 첫 페이지까지 로딩을 계속하는 재귀함수입니다          }      )  }}
function loadNext() {  const b = document.querySelector(".next");  null !== b && window.scrollY >= b.offsetTop - window.innerHeight && nextPage()}
function loadPrev() {  -1 !== location.href.indexOf("/page/") && prevPage()}
loadPrev(),window.addEventListener("scroll", loadNext)
대망의 자바스크립트입니다.
본인의 상황에 맞게 적절하게 수정하시면 됩니다.