워드프레스 개별 글 하나에 사용하는 테마에 따라 이전 글, 다음 글로 이동하는 내비게이션이 표시될 수 있습니다. 보통 이전 글/다음 글 링크를 클릭하면 카테고리에 관계 없이 이전 글 또는 다음 글로 이동하게 됩니다. 동일 카테고리 내에서만 이동하도록 하고 싶은 경우가 있을 수 있습니다.
[ 이 글은 2020년 3월 5일에 최종 업데이트되었습니다. ]
동일 카테고리 내에서 이전 글 / 다음 글로 이동하는 제한하는 방법
워드프레스에서 previous_post_link 함수와 next_post_link 함수를 사용하여 개별 글에서 이전 글과 다음 글로 이동할 수 있는 내비게이션을 추가할 수 있습니다. 보통은 카테고리에 관계 없이 블로그 글을 발행한 시점을 기준으로 이전 글/다음 글로 이동하게 됩니다. (이전 글/다음 글 탐색 기능의 표시 여부를 테마에서 옵션을 제공하는 경우가 있습니다.)
같은 카테고리 내에서만 이동하도록 하고 싶은 경우 다음과 같은 사용자 함수를 테마의 함수 파일에 추가하여 테스트해보시기 바랍니다.
// 워드프레스 글 하단에 표시되는 이전 글/다음 글 내비게이션을 카테고리로 제한 // Restrict the post navigation to the same category add_filter( 'get_next_post_join', 'navigate_in_same_taxonomy_join', 20); add_filter( 'get_previous_post_join', 'navigate_in_same_taxonomy_join', 20 ); function navigate_in_same_taxonomy_join() { global $wpdb; return " INNER JOIN $wpdb->term_relationships AS tr ON p.ID = tr.object_id INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id"; } add_filter( 'get_next_post_where' , 'navigate_in_same_taxonomy_where' ); add_filter( 'get_previous_post_where' , 'navigate_in_same_taxonomy_where' ); function navigate_in_same_taxonomy_where( $original ) { global $wpdb, $post; $where = ''; $taxonomy = 'category'; $op = ('get_previous_post_where' == current_filter()) ? '<' : '>'; $where = $wpdb->prepare( "AND tt.taxonomy = %s", $taxonomy ); if ( ! is_object_in_taxonomy( $post->post_type, $taxonomy ) ) return $original ; $term_array = wp_get_object_terms( $post->ID, $taxonomy, array( 'fields' => 'ids' ) ); $term_array = array_map( 'intval', $term_array ); if ( ! $term_array || is_wp_error( $term_array ) ) return $original ; $where = " AND tt.term_id IN (" . implode( ',', $term_array ) . ")"; return $wpdb->prepare( "WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish' $where", $post->post_date, $post->post_type ); } // Source: https://presscustomizr.com/
위의 코드를 사용 중인 워드프레스 테마의 자식 테마를 만들어 자식 테마 내에 있는 functions.php 파일에 추가하면 됩니다. 자세한 방법은 이 글을 참고해보세요.
위의 방법이 잘 안 되면 이 글에 나와 있는 코드로 시도해보시기 바랍니다. 링크된 글에서는 테마의 소스 파일(예: single.php)에서 직접 추가하는 방법이네요. 마찬가지로 차일드 테마를 만들어서 작업하시기 바랍니다.
이 글을 작성할 당시 이 블로그에 사용하던 Pluto 테마에서는 위의 코드를 적용하니까 잘 작동했습니다. 하지만 위의 코드 스니펫은 오래되었기 때문에 최신 워드프레스 버전에서 제대로 작동하는지는 장담할 수 없습니다.
대안 1: 관련 글 리스트 표시하기
이전 글/다음 글 내비게이션을 개별 포스트 하단에 표시하는 대신 관련 글(연관 글) 리스트를 표시하는 것을 고려해볼 수 있습니다. 아바다, 뉴스페이퍼 같은 테마에서는 관련 글을 표시하는 기능을 제공합니다.
테마에서 연관 글을 표시하는 옵션을 제공하지 않는 경우에는 플러그인을 사용해볼 수 있습니다. 예를 들어, 현재 이 블로그에 설치되어 있는 GeneratePress 테마에는 기능을 최소화하여 속도는 빠르지만 관련 글 목록을 표시하는 기능이 없습니다. 이 경우 다음 글에서 소개하는 관련 글 관련 플러그인(예: WP Show Posts)을 활용해볼 수 있습니다.
대안 2: 구글 애드센스의 일치하는 콘텐츠 광고 표시하기
다른 방법으로 구글 애드센스의 일치하는 콘텐츠 광고를 이전 글/다음 글 내비게이션이나 관련 글 리스트 대신 활용해볼 수 있습니다. 이 블로그에서는 현재 관련 글 대신 애드센스의 '일치하는 콘텐츠 광고'를 표시하고 있습니다.
일치하는 콘텐츠 광고를 표시하면 위의 그림과 같이 애드센스 배너 광고와 함께 관련 글이 함께 표시됩니다.
안녕하세요 선생님!
다름이 아니라 워드프레스 아스트라 테마를 사용하고 있는데요,
글을 하나 읽으면 그 아래 바로 다음글이 자동적으로 나와서 읽을 수 있도록 하려면 어떻게 해야 할까요?
안녕하세요, eddie님. 뉴스페이퍼 테마의 경우 다음 글 자동 로드 기능을 제공합니다.
https://avada.tistory.com/1584
대부분의 테마는 이런 기능이 제공되지 않습니다. 그런 경우 플러그인을 사용해볼 수 있습니다. GitHub에 Auto Load Next Post라는 플러그인이 올라온 것이 있네요. 잘 작동하는지는 모르겠습니다.
https://github.com/autoloadnextpost/auto-load-next-post
카테고리내에서 이동하기에서 개별 php 파일 수정하려고 제 어느 부분 코드를 어떻게 변경하면 좋을찌 문의드립니다.
제 코드는
<?php next_post_link( '%link', _x( '← Newer Item', 'gallery', 'risen' ) ); ?>
<?php previous_post_link( '%link', _x( 'Older Item →', 'gallery', 'risen' ) ); ?>
테마를 바꿨더니 글 끝에 이전글 다음글 링크가 나타나지 않네요.
같은 카테고리 말고 전체 글에서 이전글 다음글이 나오게 하려면 어떻게 해야 하나요?
개별 글에서 이전글, 다음글 링크가 표시되지 않는 것 같네요. 맞나요?
이것도 아마 테마 옵션 내에서 조정하는 것이 있지 않을까요?
만약 없다면 테마 소스 파일에 직접 코드를 추가하셔야 할 것 같습니다.
차일드 테마를 만든 다음, single.php 파일(테마에 따라 다름)을 차일드 테마 폴더 아래로 복사한 후에 적절한 위치에 다음 코드를 추가하면 될 것입니다.
|
매번 고맙습니다. 제가 때때로 구* ㅇㄷ센* *고 꾹꾹 누르고 가는거 알고 계시지요?^^^^
사실 이제까지 장님 코끼리 더듬는 것 처럼 하느라 저도 무척 답답했습니다.
도서관에서 책 하나 빌려왔습니다. 좀 나아지면 좋겠습니다.
감사합니다~
워드프레스와 관련하여 문의사항이 있으시면 언제든지 댓글로 달아주시면 아는 범위 내에서 알려드리도록 노력하겠습니다.ㅎㅎ
감사합니다. 저도 방금 적용했는데, 바로 적용이 되었습니다.
해외라 후원은 못 해드리지만, 자주 들어와서 구글 애드센스라도 클릭하겠습니다.
감사합니다!
감사합니다.
오늘도 즐거운 하루되시기 바랍니다.
(참고로 해외에서도 페이팔로 후원이 가능합니다^^)
제 블로그는 특성상 웹툰종류가 몇개 있는데, 항상 다음글을 누르면
전체 카테고리의 다음글로 넘어가서 불편했었거든요...
저에게 꼭 필요한 기능이였는데, 이렇게 설명해 주셔서 감사드립니다!
지금 당장 꼭 적용해 보도록 하겠습니다!!!
항상 많이 배운답니다! 행복한 하루 보내세요!!!
기가막히네요.. 바로 적용 완료하였습니다!! 알려주셔서 감사합니다!!
잘 적용되었다니 다행이네요.
벌써 한 주가 다 지나가네요.
한 주 잘 마무리하시기 바랍니다^^