WordPress 발췌문을 만들고 사용자 지정하는 방법
게시 됨: 2020-04-16발췌는 게시물과 관련된 선택적 텍스트입니다. 대부분의 경우 포스트 요약으로 사용됩니다. 새 편집기를 사용하는 경우 사이드바에 Excerpt 라는 옵션이 있음을 알 수 있습니다.

표시되지 않으면 Gutenberg의 설정에서 옵션을 활성화해야 할 수 있습니다. 편집기의 오른쪽 상단 모서리에 있는 줄임표 아이콘을 클릭한 다음 옵션 을 클릭합니다.

그런 다음 발췌문 을 찾아 활성화합니다.

테마 구성 방법에 따라 블로그의 게시물, 검색 결과 등을 볼 때 발췌문이 표시됩니다. 예를 들어, 블로그에서 모든 게시물이 관련 발췌문과 함께 표시되는 방식을 볼 수 있습니다.

이제 이 발췌문을 작성하는 것이 항상 필수입니까? 그렇지 않다면 WordPress는 무엇을 합니까? 그것은 무언가를 보여주거나 전혀 보여주지 않습니까? 글쎄, 우리는 이러한 질문에 답할 것이고 WordPress에서 발췌 부분을 사용자 정의할 수 있는 옵션을 더 자세히 살펴볼 것입니다.
WordPress 발췌문 작동 방식
WordPress에는 게시물의 발췌문을 가져오는 두 가지 기능이 있습니다. get_the_excerpt 및 the_excerpt . 둘 다 wp-includes/post-template.php 에 정의되어 있으며 소스 코드를 the_excerpt 가 하는 모든 작업이 get_the_excerpt의 결과를 echo 하는 the_excerpt 알 수 있습니다( get_the_excerpt 로 필터링한 후). 따라서 본질적으로 WordPress에서 발췌문이 작동하는 방식을 알기 위해 이해해야 하는 유일한 것은 get_the_excerpt 함수라고 대략 말할 수 있습니다.
보시다시피 get_the_excerpt 는 매우 간단합니다.
function get_the_excerpt( $post = null ) { // ... $post = get_post( $post ); if ( empty( $post ) ) { return ''; } // ... return apply_filters( 'get_the_excerpt', $post->post_excerpt, $post ); } 기본적으로 게시물을 로드하고(설정하지 않으면 WordPress 루프에서 사용 가능한 게시물을 사용함) post_excerpt 속성을 반환합니다. 따라서 발췌문이 없다는 것은 WordPress가 결국 아무 것도 표시하지 않는다는 것을 의미하는 것 같습니다. 맞습니까?
그렇게 빠르지 않아, 친구.
이 함수는 실제로 post_excerpt의 값을 직접 반환하지 않습니다. 대신 새 필터인 get_the_excerpt를 사용하여 필터링합니다. 따라서 해당 필터와 관련된 작업이 있는 경우 최종 결과가 잠재적으로 변경될 수 있으며 더 이상 빈 문자열이 아닙니다...
그리고 실제로, 그것이 바로 여기에서 일어나고 있는 일입니다! 주어진 게시물에 대한 발췌문을 작성하지 않으면 프런트 엔드에서 다음과 같이 표시됩니다.

우리 게시물의 첫 번째 단어는 WordPress가 생성하는 발췌문입니다.
wp_trim_excerpt 함수
WordPress 소스 코드에서 빠른 검색을 수행하면 기본적으로 get_the_excerpt 필터와 연결된 단일 작업만 있음을 알 수 있습니다. 특히, wp-includes/default-filters.php filters.php에서 wp_trim_excerpt 라는 함수가 후크되어 있음을 알 수 있습니다.
WordPress 문서에 따르면 wp_trim_excerpt 는 최대 55단어가 포함된 발췌문을 생성하고 필요한 경우 생략 부호를 추가합니다. 그리고 여기 핵심이 있습니다. 이 함수는 발췌문이 아직 없는 경우 "필수"로 간주합니다(일반적으로 이는 사용자가 편집기에서 발췌문을 작성하지 않았다고 말하는 것과 동일합니다). 함수의 소스 코드에서 이를 확인할 수 있습니다.
function wp_trim_excerpt( $text = '', $post = null ) { $raw_excerpt = $text; if ( '' == $text ) { $post = get_post( $post ); $text = get_the_content( '', false, $post ); // [...] » Generates the excerpt using the post content } return apply_filters( 'wp_trim_excerpt', $text, $raw_excerpt ); } 보다? 발췌문이 없으면( $text 는 빈 문자열임) 현재 게시물의 내용( $post 에서 get_the_content )을 검색하고 이를 사용하여 발췌문을 생성합니다.

이 시점부터 계속 파고들고 WordPress가 실제로 소스 코드를 생성하는 방법을 발견할 수 있습니다. 그러나 나는 당신이 이미 아이디어를 얻었다고 생각합니다. 그래서 이 주제에 대한 약간의 빛을 발산하는 문서를 다시 살펴보겠습니다.
필요한 경우 줄임표가 추가된 최대 55단어를 반환합니다. 55단어 제한은
excerpt_length필터를 사용하여 플러그인/테마로 수정할 수 있습니다. ' […]' 문자열은excerpt_more필터를 사용하여 플러그인/테마에서 수정할 수 있습니다.wp_trim_excerpt문서
이제 WordPress가 게시물에 대해 생성하는 자동 발췌문을 완전히 사용자 정의하기 위해 알아야 할 모든 것을 알게 되었습니다.
자동 발췌를 사용자 지정하는 방법
오늘의 게시물 전체에서 본 필터를 사용하여 자동 발췌 부분을 사용자 정의하는 방법에 대한 몇 가지 예를 살펴보겠습니다. 그건 그렇고, 이러한 수정 사항을 웹 사이트에 추가하려면 플러그인을 만들어야 할 수도 있습니다.
) 내 발췌문에서 원하는 단어 수를 변경하는 방법
이것은 가장 간단한 것 중 하나입니다. 발췌문에서 원하는 단어 수를 선택하기 위해 excerpt_length 필터를 마음대로 사용할 수 있다는 것을 이미 보았으므로 이를 사용합시다.
function nelio_100_word_excerpts( $length ) { if ( is_admin() ) { return $length; } return 100; } add_filter( 'excerpt_length', 'nelio_100_word_excerpts', 99 ); 함수에서 가장 먼저 하는 일은 프론트 엔드에 있는지 확인하는 것입니다. 대시보드( is_admin )에 있는 경우 발췌 부분에 대해 아무 것도 하지 않는 것이 좋습니다. "안전한 환경"에 있다고 확신하면 매직 넘버를 반환하기만 하면 됩니다. 내 경우: 100단어.
b) 자동 추출 후 나타나는 텍스트를 변경하는 방법
이것은 또한 필터가 있다는 것을 이미 보았기 때문에 매우 쉽습니다.
function nelio_clickable_read_more( $more ) { if ( is_admin() ) { return $more; } return sprintf( '<a href="%s">Tell me more!</a>', esc_url( get_the_permalink() ) ); } add_filter( 'excerpt_more', 'nelio_clickable_read_more', 99 );이 경우 우리가 하는 일은 "더 자세히 알려주세요!"라는 텍스트를 반환하는 것뿐입니다. 요약 후 사용자가 클릭할 수 있도록 링크를 만듭니다.
c) 발췌문의 길이를 특정 문자 수로 제한하는 방법
wp_trim_words 함수에는 WordPress가 사용하는 최종 발췌문을 수정하는 데 사용할 수 있는 동일한 이름의 필터가 있습니다. 그래서 그것을 사용하자:
function nelio_140_char_excerpts( $excerpt, $raw_excerpt ) { if ( is_admin() ) { return $excerpt; } if ( '' !== $raw_excerpt ) { return $excerpt; } return mb_substr( $excerpt, 0, 140 ); } add_filter( 'wp_trim_excerpt', 'nelio_140_char_excerpts', 99, 2 ); wp_trim_words 필터는 자동 및 사용자 정의 발췌문에 모두 적용됩니다. 내 예에서는 자동으로 생성된 발췌문을 수정하는 데만 관심이 있으므로 새 조건을 추가해야 합니다. 기억한다면 wp_trim_words 는 원본 발췌문이 비어 있는 경우에만 자동 발췌문을 생성하므로 원하는 결과를 얻으려면 이것을 확인하기만 하면 됩니다.
다른 한편으로, 나는 고전적인 substr 함수 대신에 mb_substr 을 사용했음을 주목하십시오. 이유가 궁금하다면 이유는 간단합니다. 블로그에 영어가 아닌 다른 언어로 글을 작성하는 경우 다중 바이트 문자를 사용하게 될 가능성이 높으며 substr 을 사용하여 다중 바이트 문자열을 줄이는 것이 잘못될 수 있습니다. 이에 대한 자세한 내용은 PHP 문서를 참조하십시오.
d) 콘텐츠의 첫 번째 단락으로 발췌문을 만드는 방법
마지막으로 게시물의 첫 번째 단락을 정확히 사용하여 발췌문을 만드는 방법의 예입니다. 이번에는 설명이 없으므로 내가 하는 일에 주목하세요.
function nelio_first_paragraph_excerpts( $excerpt, $raw_excerpt ) { if ( is_admin() ) { return $excerpt; } if ( '' !== $raw_excerpt ) { return $excerpt; } $content = apply_filters( 'the_content', get_the_content() ); return substr( $content, 0, strpos( $content, '</p>' ) + 4 ); } add_filter( 'wp_trim_excerpt', 'nelio_first_paragraph_excerpts', 99, 2 );요컨대…
WordPress의 가장 큰 장점은 확장성에 있습니다. 오늘 우리는 WordPress가 게시물 발췌문과 최종 결과를 필요에 맞게 사용자 정의하기 위해 제공하는 모든 필터 및 기능을 생성하는 방법을 자세히 보았습니다.
오늘 포스팅이 마음에 드셨으면 좋겠습니다. 더 많은 사람들이 워드프레스의 장점을 알 수 있도록 친구들과 공유하세요!
Unsplash에서 Aaron Burden의 추천 이미지.
