예제가 포함된 5 WordPress 페이지 매김 코드 조각 [단순에서 고급]
게시 됨: 2020-02-03특정 예제와 함께 WordPress에서 최고의 페이지 매김 코드를 찾고 있다면 이 게시물에서 공유하는 페이지 매김 코드 조각의 예가 매우 유용하다는 것을 알게 될 것입니다. 이 페이지 매김 코드는 WordPress 테마 또는 게시물 페이지 매김이 필요한 사용자 지정 WordPress 플러그인에 적용할 수 있습니다. 추격을 중단하고 내가 가장 좋아하는 페이지 매김 코드 조각을 공유하겠습니다.
#1) 간단한 페이지 매김 코드가 있는 WordPress 루프
WordPress 루프 내에서 페이지 매김을 추가하려면 아래의 다음 및 이전 페이지 매김 코드를 사용할 수 있습니다.
<?php if ( have_posts() ) : ?> <!-- 여기에 페이지 매김 기능을 추가하십시오. --> <!-- 메인 루프의 시작. --> <?php 동안 ( have_posts() ) : the_post(); ?> <!-- 나머지 테마의 메인 루프 --> <?php 그 동안; ?> <!-- 메인 루프의 끝 --> <!-- 여기에 페이지 매김 기능을 추가하십시오. --> <div class="nav-previous alignleft"><?php previous_posts_link( '이전 게시물' ); ?></div> <div class="nav-next alignright"><?php next_posts_link( '최신 게시물' ); ?></div> <?php 기타 : ?> <p><?php _e('죄송합니다. 기준에 맞는 글이 없습니다.'); ?></p> <?php endif; ?>
#2) WordPress 숫자 페이지 매김
또 다른 훌륭한 WordPress 페이지 매김 옵션은 게시물에 숫자를 추가하고 숫자를 기반으로 게시물을 그룹화하는 숫자 페이지 매김을 사용하는 것입니다. 예를 들어 한 페이지에 5개의 게시물을 표시할 수 있습니다. 다음은 숫자 페이지 매김을 위한 WordPress의 페이지 매김 코드입니다 .
<?php #1단계: 숫자 WordPress 페이지 매김 기능 만들기 함수 njengah_numeric_pagination() { if( is_singular() ) 반품; 전역 $wp_query; /** 페이지가 1개일 경우 실행 중지 */ if( $wp_query->max_num_pages <= 1 ) 반품; $paged = get_query_var( 'paged' ) ? absint( get_query_var( '페이징' ) ) : 1; $max = intval( $wp_query->max_num_pages ); /** 배열에 현재 페이지 추가 */ if ( $paged >= 1 ) $links[] = $페이지; /** 현재 페이지 주변의 페이지를 배열에 추가 */ if ( $paged >= 3 ) { $links[] = $paged - 1; $links[] = $페이지 - 2; } if ( ( $paged + 2 ) <= $max ) { $links[] = $페이지 + 2; $links[] = $페이지 + 1; } echo '<div class="navigation"><ul>' . "\N"; /** 이전 포스트 링크 */ if ( get_previous_posts_link() ) printf( '<li>%s</li>' . "\n", get_previous_posts_link() ); /** 첫 페이지에 대한 링크, 필요한 경우 줄임표 추가 */ if ( ! in_array( 1, $links ) ) { $class = 1 == $paged ? ' 클래스="활성"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' ); if ( ! in_array( 2, $links ) ) echo '<li>…</li>'; } /** 현재 페이지에 대한 링크 및 필요한 경우 양방향으로 2페이지 */ 정렬( $links ); foreach ( (배열) $links as $link ) { $class = $paged == $link ? ' 클래스="활성"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link ); } /** 마지막 페이지에 대한 링크, 필요한 경우 줄임표 추가 */ if ( ! in_array( $max, $links ) ) { if ( ! in_array( $max - 1, $links ) ) 에코 '<li>…</li>' . "\N"; $class = $paged == $max ? ' 클래스="활성"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max ); } /** 다음 포스트 링크 */ if ( get_next_posts_link() ) printf( '<li>%s</li>' . "\n", get_next_posts_link() ); 에코 '</ul></div>' . "\N"; } #2단계: 위의 함수에 대한 이 호출을 사용하여 템플릿에 추가 njengah_numeric_pagination(); #3단계: 테마 스타일에 맞게 페이지 매김 스타일 지정 /** 페이지 매김 스타일을 지정하는 CSS 클래스*/ .내비게이션 리 { } .내비게이션 리{ }
#3) WordPress Ajax 페이지 매김 예제
WordPress에서 Ajax 페이지 매김 코드를 찾고 있다면 GitHub에서 매우 잘 작동하는 예제를 찾았고 코드는 플러그인 형식입니다. 나는 그것을 우리 튜토리얼의 플러그인으로 만들기 위해 그것을 사용자 정의했고 코드를 파일에 복사하고 zip 형식으로 저장하고 플러그인으로 설치할 수 있습니다. 다음은 WordPress Ajax 페이지 매김 예제 코드입니다.
<?php /** * 플러그인 이름: Njengah Ajax 페이지네이션 * 플러그인 URI: https://njengah.com * 설명: WordPress Ajax 페이지 매김 예제. * 버전: 1.0.0 * 저자: 조 은젠가 * 저자 URI: https://njengah.com * 라이선스: GPL-2.0+ * 라이선스 URI: http://www.gnu.org/licenses/gpl-2.0.txt * 텍스트 도메인: cs-pagination * 도메인 경로: /languages */ // 크레딧 - 캐스퍼 슐츠 클래스 Njengah_Ajax_Pagination { 보호된 $num_per_page; 공개 함수 __construct() { $this->num_per_page = 5; $this->초기화(); } 보호된 함수 init() { add_action( '초기화', array( $this, 'add_rewrite_rule' ) ); add_filter( 'query_vars', array( $this, 'add_query_vars' ) ); add_action( 'parse_request', array( $this, 'parse_request' ) ); } /** * 들어오는 요청을 구문 분석하고 결과를 생성합니다. */ 함수 parse_request( $wp ) { if ( array_key_exists( 'cs-page', $wp->query_vars ) ) { $page = isset ( $wp->query_vars['cs-page'] ) ? $wp->query_vars['cs-page'] : 1; $args = 배열( 'post_type' => '게시물', 'post_per_page' => $this->num_per_page, '페이징' => $페이지, ); $query = 새로운 WP_Query( $args ); // 찾은 총 게시물 수를 알아야 합니다. $values['total'] = $query->found_posts; // 그리고 페이지당. $values['per_page'] = $this->num_per_page; $values['게시물'] = array(); // 필요한 데이터만 보내도록 합니다. 동안 ( $query->have_posts() ) { $query->the_post(); $values['게시물'][] = 배열( 'ID' => get_the_ID(), '제목' => get_the_title(), ); } wp_reset_postdata(); wp_send_json( $값 ); } } /** * 필요한 쿼리 인수를 추가합니다. */ 함수 add_query_vars( $query_vars ) { $query_vars[] = 'cs-페이지'; $query_vars 반환; } /** * admin-ajax 사용을 피할 수 있도록 사용자 지정 페이지 매김에 대한 재작성 규칙을 추가합니다. */ 함수 add_rewrite_rule() { add_rewrite_rule( '^cs-paginate/([0-9]+)/?', 'index.php?cs-page=$matches[1]', '상단' ); } /** * 플러시 재작성 규칙. */ 정적 함수 설치() { flush_rewrite_rules(); } } 함수 njengah_ajax_pagination_init() { 새로운 Njengah_Ajax_Pagination(); } njengah_ajax_pagination_init(); // 활성화 시 재작성 규칙을 플러시해야 합니다. register_activation_hook( __FILE__, array( 'Njengah_Ajax_Pagination', '설치' ) );
#4) 사용자 정의 게시물 유형에 대한 WordPress 페이지 매김
사용자 정의 게시물 유형 페이지 매김의 경우 WP_query를 사용하여 사용자 정의 게시물 유형을 확인하고 인수에서 post_type에 사용자 정의 게시물 유형을 전달한 다음 페이지 매김 코드를 사용하여 사용자 정의 게시물 유형에 대한 WordPress 페이지 매김을 생성해야 합니다.
다음은 functions.php에 추가하고 post_type을 각각의 사용자 정의 포스트 유형 슬러그로 교체해야 하는 코드입니다:
<?php /** * 사용자 정의 게시물 유형에 대한 WordPress 페이지 매김 */ <?php $paged = ( get_query_var( 'paged' ) ) ? get_query_var( '페이징' ) : 1; $args = 배열( 'post_type' => 'custom_post_type_name', 'posts_per_page' => 10, '페이징' => $페이지 ); $ 루프 = 새로운 WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); // 사용자 정의 게시물 유형 콘텐츠 그 동안; ?> <nav class="페이지 매김"> <?php $ 큰 = 999999999; echo paginate_links( 배열( '기본' => str_replace( $big, '%#%', get_pagenum_link( $big ) ), '형식' => '?paged=%#%', '현재' => 최대( 1, get_query_var('페이징') ), '총' => $loop->max_num_pages, 'prev_text' => '«', 'next_text' => '»' ) ); ?> </nav> <?php wp_reset_postdata(); ?>
#5 사용자 정의 쿼리 페이지 매김 WordPress
WordPress의 사용자 지정 쿼리 페이지 매김 코드는 WP_query를 사용하여 페이지 매김하려는 특정 게시물을 가져온 다음 쿼리 결과를 페이지 매김 코드와 결합하여 선택한 특정 게시물에 페이지 매김을 적용합니다. 다음은 WordPress의 사용자 지정 쿼리 페이지 매김의 예입니다.
<?php //사용자 정의 쿼리 $paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( '페이징' ) ) : 1; $args = 배열( 'posts_per_page' => 5, 'category_name' => '갤러리', '페이징' => $페이지, ); $the_query = 새로운 WP_Query( $args ); ?> <!-- 루프 등. --> <?php // 페이지 매김 $ 큰 = 999999999; // 있을 수 없는 정수가 필요합니다. echo paginate_links( 배열( '베이스' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), '형식' => '?paged=%#%', '현재' => 최대( 1, get_query_var('페이징') ), '총' => $the_query->max_num_pages ) );
결론
이 게시물에서는 다양한 유형의 WordPress 페이지 매김을 강조하고 각 경우에 사용할 특정 페이지 매김 코드를 공유했습니다. WordPress의 이 페이지 매김 코드는 기존 테마나 플러그인에 추가할 수 있으며 WordPress에 독립 실행형 플러그인으로 추가할 수도 있습니다.