워드프레스 글 목록에 검색엔진 메타 설명문 표시하기


검색엔진의 검색결과 페이지에 내 글의 설명은 뭐라고 나올까? 적절할까? 검색엔진에서 검색하지 않고 내가 늘 보는 내 블로그 홈에서 메타 설명을 보는 방법이 없을까? 내 블로그홈에 메타 설명을 표시하면서 워드프레스 테마에 사용한 코드를 정리했다.

내 블로그 홈의 글 목록

내 블로그 홈은 새 글 목록을 표시한다. 글 제목과 썸네일, 그리고 설명 일부분과 태그나 카테고리를 표시한다.

대부분 제목이나 썸네일을 보고 누르지만 나는 본문도 일부 보고 싶다. 특히 해당 글의 태그를 눌러서 다른 글 목록을 보곤한다.

블로그의 홈을 방문하는 사람은 나 말고는 거의 없다. 나 처럼 워드프레스로 만든 독립형 블로그는 거의 대부분의 방문자는 검색을 통해서 글로 바로 들어오기 때문이다.

내 블로그는 방문자 보다는 나를 위한 블로그이다. 그래서 내 블로그홈은 내가 가장 많이 들어간다.

내 블로그 글 목록에 본문 일부 표시

2005년 이후 18년 넘게 본문 거의 이 모양이었다. 다른 내 블로그는 제목과 썸네일 사진을 크게 보이는 갤러리형인데, 이 도비호닷컴은 약간 모바일 뉴스 사이트 처럼 제목과 썸네일, 본문 일부를 보고 싶었다.

요약글을 표시하는게 보통인데, 나는 요약을 입력하지 않으므로 본문 처음 부터 지정한 글자 만큼만 가져다 표시했다.

워드프레스 글 목록에 본문 일부 표시하기

글의 본문에서 처음 30글자를 가져와서 표시하고, 태그를 표시한다. 카테고리도 표시했더니 너무 많아져서 카테고리 표시는 뺐다.

워드프레스 테마 구조 중 홈은 index,php 이다. 본문에 표시할 부분에 다음 코드를 넣으면 본문의 처음 부터 지정한 글자 만큼 가져와서 표시한다.

내 블로그 홈 글 목록의 본문에 검색결과 메타 설명문으로 변경

내 블로그 홈 목록의 본문 텍스트를 검색결과에서 표시되는 메타 설명문으로 변경하자.

원래 워드프레스의 글이나 페이지에는 요약글(exerpt)를 별도로 입력할 수 있다. 이걸 입력하면 보통 워드프레스에서 글 목록을 표시할 때 본문 일부 대신 이 요약글을 표시할 수 있다. 특히 검색엔진이나 SNS에서는 이 요약글을 가져다 보여준다.

난 요약글과 RankMath SEO 플러그인의 검색결과용 메타설명문도 입력을 잘 안 한다. 앞으로 ChatGPT을 이용해서 만든 SEO 용 메타 설명문이 마음에 들거나 효과가 있는지 확인하기 보려고 한다. 이걸 확인하려면 구글이나 네이버에서 검색해봐야 하니 그냥 내 블로그 홈에서 검색결과페이지(SERP)의 설명문이 적절한지 보고 싶다.

검색결과 메타 데이터

검색 결과의 메타 설명문 표시하기 (RankMath SEO 플러그인의 스니펫)

검색엔진은 워드프레스의 요약글을 검색결과의 제목 아래 설명에 사용한다.

만약 워드프레스의 요약글이 없으면 보통 검색엔진은 글의 첫 문단을 설명으로 사용하거나 네이버 검색 처럼 본문 일부를 설명으로 사용하기도 한다.

워드프레스 RankMath SEO 플러그인을 사용하면 글에 요약글이 없으면 자동으로 본문의 첫 문장을 요약글로 사용하게할 수 있다.

워드프레스가 글을 html 로 표시할 때 <head>의 메타 설명에 아래와 같이 content 에 요약글이나 첫 문장을 넣어주는 것이다.

<meta name="description" content="">

RankMath SEO 플러그인으로 글 마다 검색엔진의 검색결과에 표시되는 스니펫을 볼 수 있고, 검색 메타 설명문을 편집할 수 있다.

스니펫의 검색결과 설명문을 입력하지 않아도 디폴트로 특정 내용을 저장되게 할 수 있다. RankMath SEO 플러그인의 설정에서 보통 요약글이 저장되게 한다.

나는 요약글을 거의 작성하지 않고, 검색결과 페이지에 표시되는 검색 메타 설명문도 거의 작성하지 않는다. 귀찮기 떄문이다. 대신 본문의 첫 단락을 검색결과의 메타 설명문이라고 생각하고 작성한다. RankMath SEO 플러그인에서 스니펫 설명문을 입력하지 않으면 요약글을 사용하게 설정했고, 플러그인은 요약글을 입력하지 않으면 자동으로 본문의 첫 단락을 사용하기 때문이다.

검색엔진의 검색결과 메타 설명문의 최대 길이

구글 메타 설명의 최대 길이는 155~160자 라고 한다. 모바일은 120자라고 한다. 그러나 120자 정도로 요약글을 작성하거나 글의 첫 문단을 작성하는게 좋을 것 같다.

글 목록에 검색결과 메타 데이터 표시하기

글 목록에 요약글 표시하기

워드프레스 테마의 index.php 에 the_excerpt()를 쓰면 된다.

<?php echo the_excerpt(); ?>

요약글을 입력하지 않으면 공백이 표시되는 문제가 있다.

요약글이 있으면 요약글을, 없으면 본문의 첫 단락을 표시하기

첫 문장이 아니라 첫 단락이다. 그리고 단락의 기준은 내 경우 워드프레스 블럭 에디터를 사용하므로 아래와 같이 wp:paragraph 를 기준으로 했다.

<!-- wp:paragraph -->
<!-- /wp:paragraph -->

php 코드는 다음과 같다.

get_excerpt_or_first_paragraph 함수는 워드프레스 테마의 functions.php 에 저장하고, index.php 에서 사용하면 된다.

/**
 * 워드프레스 포스트의 요약글 또는 첫 단락을 반환합니다.
 * 
 * - 포스트에 요약글이 설정되어 있다면 해당 요약글을 반환합니다.
 * - 요약글이 없는 경우, 포스트의 본문에서 첫 번째 단락을 반환합니다.
 * - $max_length 인자를 통해 반환되는 텍스트의 최대 길이를 지정할 수 있습니다.
 * - $max_length를 지정하지 않으면 전체 텍스트를 반환합니다.
 * - 지정된 $max_length를 초과하는 텍스트는 "..."로 줄여서 반환됩니다.
 * 
 * @param int|null $max_length 반환할 텍스트의 최대 길이. 지정하지 않으면 전체 텍스트를 반환합니다.
 * @return string 요약글 또는 첫 단락.
 */
function get_excerpt_or_first_paragraph($max_length = null) {
    $text = '';

    if (has_excerpt()) {
        $text = get_the_excerpt();
    } else {
        $content = get_the_content();
        preg_match('/<!-- wp:paragraph -->(.*?)<!-- \/wp:paragraph -->/s', $content, $matches);
        if (isset($matches[1])) {
            $text = strip_tags($matches[1]);
        }
    }

    if ($max_length && mb_strlen($text) > $max_length) {
        $text = mb_substr($text, 0, $max_length) . '...';
    }

    return $text;
}

echo get_excerpt_or_first_paragraph();

만약 요약글이 너무 길면 표시할 때 짜를 수 있다. 아래와 같이 하면 최대 글자 수 만큼만 표시 된다.

echo get_excerpt_or_first_paragraph(120);

글 목록에 RankMath SEO 의 스니핏 메타 설명을 표시하기

RankMath SEO 스니핏 메타 설명문을 표시하는 함수를 찾았는데, 문제는 입력하지 않으면 공백이 표시된다.

스니핏 입력창에는 요약글 또는 첫 단락이 보이지닌 실제로는 값이 저장되지는 않았고, meta 로만 만드는 모양이다.

나는 RankMath SEO 의 글 스니핏을 거의 작성하지 않지만, 아래와 같이 해보기로 했다.

  1. RankMath SEO 플러그인을 사용하는 경우
    • 스니핏의 메타 설명문을 표시한다.
    • 만약 메타설명문이 공백이면?
      • 요약글을 표시한다. 요약글이 공백이면?
        • 첫 단락을 표시한다. (이건 아까 위에서 함수를 만들었다)
  2. 플러그으니 없으면?
    • 요약글을 표시한다. 요약글이 공백이면?
      • 첫 단락을 표시한다. (이건 아까 위에서 함수를 만들었다)

이렇게 해서 만들었다. 겉으로 보기에는 별로 차이가 안 난다. 😆

dobiho.com 을 누르면 볼 수 있다.

워드프레스 글 목록에 요약글 표시하기

암튼, 이걸 만드는 방법은 다음과 같다.

get_excerpt_or_first_paragraph()는 위에서 사용한 대로 워드프레스 테마의 functions.php 에 저장한다.

그리고 다음 코드를 index.php 의 해당 글 부분에 넣는다.

<?php 
								     
	$post_id = get_the_ID(); // 현재 포스트의 ID를 가져온다.
	
	// Rank Math SEO 플러그인이 설치되어 있으면
	if (function_exists('rank_math')) {
	    // Rank Math SEO 플러그인에서 설정된 스니핏(메타 설명)을 가져온다.
	    $meta_description = get_post_meta($post_id, 'rank_math_description', true);
	
	    // 스니핏이 설정되어 있지 않은 경우
	    if (empty($meta_description)) {
	        // 포스트의 요약글 사용,요약글이 없으면 첫 문장사용한다. 
	        $meta_description = get_excerpt_or_first_paragraph();
	    }
	} else {
	    // Rank Math SEO 플러그인이 설치되어 있지 않으면 포스트의 요약글, 첫 문장을 사용한다.
	    $meta_description = get_excerpt_or_first_paragraph();
	}
	
	echo $meta_description;
?>

RankMath 플러그인을 사용하고 있으면 RankMath의 메타 설명문을 사용하고, 아니면 본문의 앞 부분을 표시하게 하려면 다음과 같이 하면 된다.

<?php 
    if (class_exists('RankMath\Paper\Paper')) {
         echo RankMath\Paper\Paper::get()->get_description();
     } else {
         echo mts_excerpt(30); echo "...";
     }
?>

마치며

내 블로그 홈 목록에 본문 일부를 표시하는데, 이를 검색엔진 검색결과에 표시하는 메타 설명문으로 바꿨다. RankMath SEO 플러그인의 스니팻에 메타 설명문을 입력하면 그걸 표시하고, 입력하지 않았으면 요약글을 표시하고, 요약글이 없으면 첫 문단을 표시한다.

앞으로 얼마나 내가 검색결과용 메타 설명문을 바꿀지 모르겠지만 일단은 내 블로그 목록에서 보면서 생각해봐야겠다.







제휴 링크로 구매 시 제휴마케팅 활동의 일환으로 일정액의 수수료를 지급받아 콘텐츠를 제작하는데 큰 도움이 됩니다.



도움이 되셨다면, 댓글이나 소중한 커피 한 잔 부탁드려도 될까요?

커피 사주기
























당신이 좋아할 만한 글







윗몸일으키기: 윗몸일으키기 카운터

윗몸일으키기 하면 자동으로 횟수 측정, 횟수를 음성으로 세주고, 윗몸일으키기 속도 분석, 일별/월별/연도별 운동 기록 관리









Add a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다