홈, 블로그 및 아카이브 페이지에 대한 게시물 및 콘텐츠 제한 설정
게시 됨: 2013-08-15이 튜토리얼에서는 아카이브 및 블로그 페이지 템플릿의 콘텐츠 제한을 제어하는 데 사용할 수 있는 기본 제공 Genesis 설정을 살펴보겠습니다.
또한 WordPress 읽기 설정과 이 설정이 Genesis 설정에 미치는 영향도 고려할 것입니다.
이 외에도 다음을 추가로 사용자 정의하는 데 사용할 수 있는 몇 가지 작업 코드 스니펫도 살펴보겠습니다.
- 블로그 페이지
- 아카이브
- 홈페이지
- 그리드 루프
- 사용자 정의 게시물 유형
우리는 StudioPress의 새로운 Eleven40 Pro 하위 테마와 기본적으로 그리드 루프 또는 홈 페이지 위젯을 포함하지 않는 Genesis 2.0 샘플 하위 테마를 사용할 것입니다.
균형 테마와 같은 다른 여러 StudioPress 테마와 함께 Eleven40 Pro 테마는 home.php 파일에 사용자 정의 그리드 루프를 포함합니다.
WordPress에서 설정 읽기
먼저 읽기 설정에서 WordPress가 제공하는 기존 설정을 살펴보겠습니다. 이 설정은 다음을 포함하여 모든 보관 페이지에 표시되는 게시물 수에 영향을 미칩니다.
- 블로그 목록 페이지
- 작성자, 블로그, 카테고리, 검색 및 태그 페이지를 포함한 아카이브 페이지
읽기 설정은 위의 스크린샷에서 볼 수 있는 것과 같은 기본 설정을 그대로 두면 모든 아카이브 페이지와 홈페이지에 표시되는 게시물 수를 결정합니다.
읽기 설정은 블로그 페이지를 제어하지 않습니다. 이는 블로그 페이지 템플릿 설정에 의해 제어되기 때문입니다. Genesis는 Genesis > 테마 설정에 포함되어 있습니다.
이에 대한 예를 살펴보겠습니다. 읽기 설정이 5개의 게시물을 표시하도록 설정되어 있으면 홈 페이지와 모든 아카이브에 5개의 게시물이 표시되지만 블로그 페이지에는 표시하도록 설정한 모든 것이 표시됩니다.
읽기 설정이 다음으로 설정되어 있어도 블로그 페이지는 최대 5개로 표시되지만, 이는 홈 페이지에만 적용되며 사용자 정의 블로그 페이지에 대한 블로그 페이지 템플릿과 함께 정적 사용자 정의 페이지를 사용하는 경우에는 적용되지 않습니다.
이러한 설정은 위의 스크린샷과 같이 제네시스 블로그 페이지 템플릿 설정에 의해 제어됩니다.
기본 홈페이지 게시물 제한 사용자 지정
아카이브가 읽기 설정에 설정된 수를 표시하지만 홈 페이지에 다른 수의 게시물을 표시하도록 하려면 하위 테마 functions.php 파일에서 일부 사용자 정의 코드를 사용해야 합니다.
add_action( 'pre_get_posts', 'change_posts_number_home_page' ); function change_posts_number_home_page( $query ) { if ($query->is_home() && $query->is_main_query() ) { $query->set( 'posts_per_page', 5 ); <pre><code>return $query; } </code></pre> }
위의 코드는 아카이브에 표시되는 게시물 수에 영향을 주지 않습니다.
아카이브에 표시되는 게시물 수 변경
또한 이 코드를 사용하여 다른 아카이브를 제어하는 읽기 설정에 영향을 주지 않고 카테고리 및 작성자 아카이브 페이지와 같은 다른 아카이브에 표시되는 게시물 수를 변경할 수 있습니다.
add_action( 'pre_get_posts', 'change_number_posts_per_category' ); function change_number_posts_per_category( $query ) { <pre><code>if ( is_category('29') ) { $query->set( 'posts_per_page', 1 ); return $query; </code></pre> }}
홈 페이지에서 그리드 루프 포스트 제한 사용자 정의
테마의 home.php 파일에 그리드 루프가 포함된 경우 홈 페이지에 표시되는 전체 너비 추천 게시물 수와 그리드 루프 게시물 수를 간단히 제어할 수 있습니다.
또한 home.php 파일에 코드가 포함되어 있기 때문에 추천 게시물과 홈 페이지에만 그리드에 표시되는 게시물에 대한 콘텐츠 제한을 제어할 수도 있습니다.
모든 설정은 home.php 파일 그리드 루프 코드에 있습니다.
<?php remove_action( 'genesis_loop', 'genesis_do_loop' ); add_action( 'genesis_loop', 'eleven40_grid_loop_helper' ); /** Add support for Genesis Grid Loop */ function eleven40_grid_loop_helper() { <pre><code>if ( function_exists( 'genesis_grid_loop' ) ) { genesis_grid_loop( array( 'features' => 1, 'feature_image_size' => 0, 'feature_image_class' => 'alignleft post-image', 'feature_content_limit' => 0, 'grid_image_size' => 'grid-featured', 'grid_image_class' => 'grid-featured', 'grid_content_limit' => 250, 'more' => __( '[Continue reading]', 'eleven40' ), 'posts_per_page' => 5, ) ); } else { genesis_standard_loop(); } </code></pre> } genesis();
위의 PHP 코드는 5개의 게시물을 표시하도록 설정되어 있습니다. 전체 콘텐츠 너비와 무제한 콘텐츠 제한을 표시하는 하나의 추천 게시물부터 시작하여 첫 번째 게시물의 전체 게시물 콘텐츠를 표시하도록 0으로 설정합니다.
그런 다음 각 게시물에 대해 하나씩 업로드하고 추천 이미지로 설정한 경우 추천 이미지와 함께 콘텐츠 제한이 250개로 설정된 그리드에 4개의 게시물을 표시합니다.
이러한 설정은 읽기 설정으로 덮어쓰여집니다. 즉, 읽기 설정이 20개의 게시물을 표시하도록 설정된 경우 위 그리드 루프의 설정에 관계없이 홈 페이지에 표시되는 내용이 표시됩니다.
이를 사용자 정의하려면 하위 테마 functions.php 파일에서 이 PHP 코드를 사용하여 그리드 루프에 대한 읽기 설정을 덮어쓰고 읽기 설정을 사용하여 모든 아카이브 페이지에 표시되는 게시물 수를 제어할 수 있습니다.
그리드 루프 포스트 제한 변경
add_action( 'pre_get_posts', 'change_num_posts_in_grid' ); function change_num_posts_in_grid( $query ) { global $wp_the_query; if( $query->is_main_query() && is_home() ) { $query->set( 'posts_per_page', '5' ); } }
위의 코드는 코드의 조건부 태그를 is_home()에서 다른 것으로 변경하여 그리드 루프를 사용하는 다른 페이지에서 작동하도록 수정할 수도 있습니다.
홈 페이지의 하위 페이지
그리드 또는 표준 발췌의 하위 페이지에 표시되는 게시물 수를 제어하려는 경우 다음과 같은 코드를 사용할 수 있습니다.
add_action( 'pre_get_posts', 'change_num_posts_in_grid' ); function change_num_posts_in_grid( $query ) { global $wp_the_query; if( $query->is_main_query() && is_home() && is_paged() ) { $query->set( 'posts_per_page', '5' ); } }
다양한 홈 포스트 레이아웃에 Genesis 그리드 루프를 사용하는 방법에 대해 자세히 알아보세요.
특정 카테고리에 대한 콘텐츠 제한 변경
또한 WordPress 읽기 설정을 덮어쓰고 집, 작성자, 블로그, 카테고리, 검색 및 태그 페이지 아카이브를 포함한 모든 아카이브에 대한 발췌 제한을 사용자 지정할 수 있습니다.
add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(is_category('29') ) { return 20; } }
위의 코드는 id가 29인 카테고리 페이지의 발췌 길이를 20단어 제한으로 변경합니다.
WordPress에서 발췌한 내용에서 제거한 HTML 형식 지정 태그를 다시 추가할 수도 있습니다.
또한 아래의 이 코드를 사용하여 특정 아카이브에서 발췌한 내용의 제한을 제어한 다음 다른 아카이브에서 설정된 제한을 표시하도록 설정할 수도 있습니다. 참고: 창세기 > 테마 설정 > 콘텐츠 아카이브는 콘텐츠 제한이 아닌 발췌문을 표시하도록 설정해야 합니다.
add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(in_category('web-design') ) { return 20; } else { return 500; } }
위의 코드는 웹 디자인 범주의 발췌 부분에 대한 콘텐츠 제한을 20으로 표시하고 다른 모든 아카이브는 제한을 500으로 표시합니다.
다음은 여러 범주의 배열을 포함하는 일부 PHP 코드입니다.
add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(in_category(array( 153,154,156 ) ) ) { return 100; } else { return 300; } }
이 코드는 카테고리 ID를 사용하고 3개의 카테고리에 대해 100개의 콘텐츠 제한을 표시합니다. 다른 모든 아카이브는 300개로 제한됩니다.
발췌문 사용자 정의에 대해 자세히 알아보십시오.
맞춤 포스트 유형(CPT)
다음은 CPT의 아카이브 페이지에 표시되는 맞춤 게시물 유형의 게시물 수를 결정하는 코드입니다.
add_action( 'pre_get_posts', 'cpt_archive_items_limit' ); function cpt_archive_items_limit( $query ) { <pre><code>if( $query->is_main_query() && !is_admin() && is_post_type_archive( 'your-cpt' ) ) { $query->set( 'posts_per_page', '3' ); } </code></pre> }
위의 코드에서 your-cpt를 사용자 정의 게시물 유형의 이름으로 바꾸기만 하면 됩니다.
결론
WordPress 후크와 필터를 사용하는 것이 Genesis에서도 완벽하게 작동함을 직접 확인할 수 있습니다.
유사한 솔루션
- 모든 아카이브 페이지 템플릿에 항목 발췌문을 표시하도록 설정
- Genesis 콘텐츠 아카이브 제한을 설정하는 코드
- 특정 아카이브 페이지에 전체 게시물 콘텐츠 또는 발췌문 표시
- Pre Get Posts를 사용하여 조건부로 아카이브 페이지 사용자 정의
- 블로그 페이지에 발췌문 표시 및 창세기의 다른 아카이브에 전체 콘텐츠 표시