페이징 링크관련 질문입니다.

오늘은 링크관련 질문입니다.^^;
페이징을 할때 포맷에 #id를 지정해서 페이지내 특정위치로 바로 스크롤 되게 하려고 합니다.

 

function bfnam_pagination()
{
global $wp_query;
$big = 999999999;
echo paginate_links(array(
‘base’ => str_replace($big, ‘%#%’, get_pagenum_link($big)),
‘format’ => ‘?paged=%#%/#bbs’,
‘current’ => max(1, get_query_var(‘paged’)),
‘total’ => $wp_query->max_num_pages
));

}

대략 이런 함수를 만들어 init시키고 페이징 할때 링크걸리는 걸 확인 했씁니다.

그런데 페이지내의 컨텐츠가 많아 특정위치로 스크롤링이 되게 하려고 하는데 안되네요…

include폴더안에 general-template.php 파일의 paginate_links함수를 수정해야할지….하더라도 어떻게 해야할 지 다른 방법이 있는지 여쭤봅니다.

‘format’ => ‘?paged=%#%/#bbs’, 이방법이 ‘base’ => str_replace($big, ‘%#%’, get_pagenum_link($big)),일땐 적용이 안돼고 ‘base’ => ‘_’ 일땐 작동을 하는데 막상 다른페이지로 이동하려고 하면 페이지 번호가 변경이 안돼는 관계로 조언을 부탁드립니다.

이런 경우 대략 어떤 해결을 하시는지 그럼 조언 부탁드립니다.

 

목록보기

해당 글에 3개의 댓글이 있습니다.

  1. sensewake 댓글:

    혹시나 답변을 기대하고 다시 질문을 남겨봅니다.
    function.php에 함수를 만들고
    function pagination()
    {
    echo (“pagination”);
    echo (“wp_query:”.$wp_query.””);
    echo (“paged:”.$paged.””);
    echo (“get_query_var(‘page’):”.get_query_var(‘page’).””);
    echo (“get_query_var(‘paged’):”.get_query_var(‘paged’).””);
    global $wp_query;
    $big = 999999999;

    if( get_query_var(‘paged’)>0){
    echo paginate_links(array(
    ‘base’ => str_replace($big, ‘%#%’, get_pagenum_link($big)),
    ‘format’ => ‘?paged=%#%’,
    ‘current’ => max(1, get_query_var(‘paged’)),
    ‘total’ => $wp_query->max_num_pages
    ));
    }

    }

    페이지 파람이 넘어오면
    $(‘html, body’).animate({
    scrollTop: $(“#bbs”).offset().top
    }, 0);
    이렇게 바로 가게 했는데 1페이지를 클릭하면 page가 파람이 안넘어와서 처음 페이지를 로드 했을때 처럼 맨 위에서 부터 보여지는게 문제가 되네요.
    왜서 page 파람이 사라지는 건지 어떻게 확인을 해야할지 워드프레스의 어떤 부분을 봐야할지 모르겠네요..
    조언 부탁드립니다.

  2. 피터 댓글:

    우선 댓글에 추가로 남겨주신 코드는 1페이지일때는 파라메터가 안 넘어오는 것이 맞습니다.
    워드프레스는 1페이지인 경우 별도의 페이징 파라메터를 붙이지 않으며, 그래서 덧 붙여주신 코드를 보면,
    현재 페이지를 얻기 위해 max(1, get_query_var(‘paged’)) < == 이렇게 작성되어 있습니다.
    연출하시려는 동작이 정확하게 어떤 것인지 모르겠지만, 본글과 댓글 내용을 통해 유추해보면,
    특정 카테고리에 처음 접근할 땐 일반적으로 위에서 부터 보여주고,
    그 안에서 페이지 이동을 하면, #bbs로 스크롤 되어 보여주도록 하려는 의도로 가정하고 답변 드리겠습니다.

    예를 들어, ux변경을 하려는 카테고리가 ‘genre’라면
    function attach_hash_tag($link) {
    if(is_category(‘genre’)) {
    $link.= ‘#bbs’;
    }
    return $link;
    }
    add_filter(‘paginate_links’, ‘attach_hash_tag’, 10, 1);
    와 같이 기본 페이지네이션 링크에 훅을 사용하여 해시태그를 덧 붙여주시면,
    스크립트 사용 없이도 브라우저의 기본 동작을 이용하여 화면 이동이 가능합니다.

    is_category 부분을 요구사항에 따라서
    is_archive()를 사용하여 모든 아카이브 목록에 적용할 수도 있고,
    get_post_type()를 사용하여 특정 포스트 타입의 아카이브에서만 적용하는 등
    변형하여 사용하시면 되겠습니다.

  3. sensewake 댓글:

    고맙습니다.
    정말 늘 감사합니다.^^

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다