bojaghi / pagination
Simple pagination range generation helper
1.0.1
2024-10-26 14:47 UTC
Requires
- php: >=8.0
Requires (Dev)
- bojaghi/wp-tests: ^1.0
- phpunit/phpunit: ^9
- yoast/phpunit-polyfills: ^3.0
README
게시판과 유사한 목록 페이지를 만들면, 항상 페이지네이션을 생각해야 합니다. 이 패키지는 워드프레스의 WP_Query 객체로부터 쉽게 페이지네이션의 시작과 끝을 구할 수 있게 도와줍니다.
사용방법
방법 1: 생성자에 WP_Query 넣기
WP_Query 사용시, 객체를 생성자로 넣어주면 됩니다.
$p = new Pagination($wp_query); // create() 를 호출할 필요가 없습니다. $begin = $p->getBegin(); $end = $p->getEnd();
방법 2: 메서드 사용
메서드를 사용해 WP_Query를 지정합니다.
$p = new Pagination(); $p->setQuery($wp_query); // create() 를 호출할 필요가 없습니다. $begin = $p->getBegin(); $end = $p->getEnd();
방법 3: 파리미터를 직접 입력
WP_Query를 사용하지 않는 경우, 직접 파라미터를 입력하여 계산할 수 있습니다.
$p = new Pagination(); $p ->setSize(5) // 페이지네이션 길이. 기본 5. ->setNumItems(10) // 한 페이징당 표시할 아이템 수. ->setTotal(130) // 모든 게시물의 수. ->setCurrent(2) // 현재 페이지. ->create() // 반드시 create() 함수를 호출해야 합니다. ; $begin = $p->getBegin(); $end = $p->getEnd();
페이지네이션 계산 방식
섹션
setType() 메서드에 Pagination::TYPE_SECTION
을 입력하여 설정할 수 있습니다. 기본값입니다.
페이지네이션 사이즈만큼 표시하는데, 분할된 섹션 안에서 현재 페이지는 적당히 배치시키는 방식입니다.
아래 예시를 참고하세요. [ ] 안의 숫자는 현재 페이지입니다.
e.g. size=5
[1] 2 3 4 5 // 1-5 가 한 색션.
1 [2] 3 4 5 // 섹션 내 숫자를 항상 배치. 현재 페이지는 이 중 적당히 위치함.
1 2 [3] 4 5
1 2 3 [4] 5
1 2 3 4 [5]
[6] 7 8 9 10 // 6-10 은 다른 한 섹션.
6 [7] 8 9 10
6 7 [8] 9 10
6 7 8 [9] 10
6 7 8 9 [10]
센터
setType() 메서드에 Pagination::TYPE_CENTER
를 입력하여 설정할 수 있습니다.
페이지네이션 사이즈만큼 표시되며, 현재 페이지가 항상 가운데 위치하게끔 최선을 다합니다.
아래 예시를 참고하세요.
e.g. size=5
[1] 2 3 4 5 // 항상 가운데 위치할 수는 없음!
1 [2] 3 4 5 //
1 2 [3] 5 5 // 이제부터 현재 페이지는 가운데 고정.
2 3 [4] 5 6
3 4 [5] 6 7
4 5 [6] 7 8
5 6 [7] 8 9
6 7 [8] 9 10