문서에 메타 설명이 없음 워드프레스 description 자동화

  1. 'PageSpeed Insights' 검사시 검색엔진 최적화 부문 '문서에 메타 설명이 없음(Document does not have a Meta description)' 오류 뜸
  2. 원인은 사이트 html head안에 description meta name(문서의 메타 설명) 속성이 없어서 그럼
문서에 메타 설명이 있을 때 메시지와 html 상태
문서에 메타 설명이 있을 때 메시지와 html 상태

해결법

  1. 아래 자동 description 하드필터 코드를 functions.php로 사용한다(functions.php 사용법 1초컷) → 메타 정보를 입력하지 않아도 자동으로 콘텐츠 첫 부분 160자description으로 등록하고, 수동 작성하고 싶다면 워드프레스 기본 에디터의 요약글(WRITE AN EXCERPT) 내용을 넣어주면 우선 인식해 description으로 등록한다. 글마다 사용자 의도대로 구현되고, 속도저하 오류덩어리 플러그인도 필요없다.
  2. 일일히 페이지마다 html 수정해서 description 코딩한다. → 하다 죽을듯
  3. 쓸모없고 사이트만 느려지는 SEO 플러그인 설치해서 일일히 포스팅마다 메타정보 작성한다. → 다들 이렇게 함, 근데 매번 중요한 글도 아니고 빼먹으면 description 누락된 글이 됨, 또 플러그인 삭제하면 메타정보도 날아감, SEO도 함께 날아감 굿
// by HardFilter.com
add_post_type_support( 'page', 'excerpt' );
function meta_description_c() {
	if( is_home() ) { 
		echo '<meta name="description" content="' . 'Homepage' . '" />' . "\n";
	}
	if ( is_category() ) {
		$description = get_the_archive_description();
		$description = str_replace( array("<p>", "</p>", "\n"), '', $description );
        echo '<meta name="description" content="' . $description . '" />' . "\n";
	}
	if ( is_tag() ) {
		$title = get_the_archive_title();
        echo '<meta name="description" content="' . $title . ' tag Archive' . '" />' . "\n";
	}
	if( is_singular() ) { 
		if( has_excerpt() ){
		$excerpt = wp_filter_nohtml_kses(get_the_excerpt());
		$excerpt = str_replace( array("\n", "\r", "\t"), ' ', $excerpt );
		}
		else {
		$excerpt = wp_filter_nohtml_kses(apply_filters( 'the_content', get_the_content( '', false, $excerpt ) ));
		$excerpt = str_replace( array("\n\n\n", "\r", "\t"), ' ', $excerpt );
		$excerpt = str_replace( array("\n", "\"", "\\", "&gt;", "&lt;"), '', $excerpt );
		$excerpt = str_replace( array('  '), ' ', $excerpt );
		}
		$excerpt = mb_substr($excerpt, 0, 160, 'utf8');
		echo '<meta name="description" content="'.$excerpt.'" />' . "\n";
	}
}
add_action( 'wp_head', 'meta_description_c');

코드 해석

  1. 홈 화면(ex.com/)(정적 페이지 세팅시 Posts page로 치환됨)의 메타 설명, 강조된 Homepage 부분이 표현될 메타정보, 커스텀 가능
  2. 카테고리(ex.com/category/*)도 워드프레스 대시보드에서 Description을 입력할 수 있는데, 이 부분을 자동인식해서 해당 카테고리의 메타 설명으로 등록되게 코딩
  3. 태그 아카이브(ex.com/tag/*) 또한 '(태그명) tag Archive' 로 모든 태그를 개별 자동 인식해서 등록되게 코딩, 마찬가지 강조 부분 커스텀 가능
  4. 포스팅 및 페이지는 앞서 말한대로 워드프레스 기본 요약글(WRITE AN EXCERPT) 부분이 채워져 있으면 description으로 우선 등록하고, 요약글 란이 비어있으면 포스팅의 첫 160자를 자동인식해 등록하게 코딩. 강조된 160 부분을 변경하면 글자수 조절 가능
  5. 페이지는 요약글 기능이 없는데? 이 코드를 사용하면 페이지에도 요약글 기능이 자동 오픈되게 코딩. add_post_type_support( 'page', 'excerpt' ); 부분이 해당 코드라인, 원치 않으면 삭제 ㄱ
  6. "\r", "\t" 같이 강조된 부분은 본문 글을 가져올 때 ' ' 내용으로 문자를 치환해주는 코드, generatepress 기준 본문 글을 가져오면 매 줄마다 3칸씩 줄바꿈이 생기기 때문에 \n\n\n 3단 줄바꿈까지 공백으로 바꾼 것, 본인 스킨에서 이상하게 나온다면 이 부분들을 조절하면 됨.
  7. '' 는 문자를 치환이 아니라 아예 없애버리는 것. 예제 코드에선 콘텐츠 변환시 html 문제 생기는 쌍따옴표 " = \", 백슬래시 \ = \\, 홑화살괄호 >< = ">", "<" 등을 제거함.