wordpress でページ毎に description を自動で設定する。

シェアする

wordpress いじってたときに気づいたが、なんとデフォルトでは meta の description が空だったので。というか meta タグ自体なかった。なんでやねん。

というわけでSEO的にどこまで有効なのかはわかりませんが google の検索結果に表示される文章なわけだし明示的に指定しておいたほうがいいかなというわりと適当な理由で表示させる事にしました。

記載する内容は、
個別記事,固定ページ -> 抜粋、無ければ本文の先頭80文字
アーカイブ -> アーカイブのタイトルっぽい文言
にしました。以下コード。header.php 内にある、<head> 内に適当に配置。

<?php
if ( is_single() || is_page() ) {
	if ($post->post_excerpt){
		$description = $post->post_excerpt;
	} else {
		$summary = strip_tags($post->post_content);
		$summary = str_replace("\n", '', $summary);
		$summary = mb_substr($summary, 0, 80). "...";
		$description = $summary;
	}
} else if (is_category()) {
	$description = single_cat_title('',false) . "カテゴリーの記事一覧";
} else if (is_tag()) {
	$description = single_tag_title('',false) . "のタグがついた記事一覧";
} else if (is_day()) {
	$description = get_the_time('Y年n月j日 l') . "に書かれた記事一覧";
} else if (is_month()) {
	$description = get_the_time('Y年n月') . "に書かれた記事一覧";
} else if (is_year()) {
	$description = get_the_time('Y年') . "に書かれた記事一覧";
} else if (is_author() && array_key_exists('author', $_GET)) {
	$author_name = get_the_author_meta('display_name', intval($_GET['author']));
	$description = $author_name . "が書いた記事一覧";
} else { 
	$description = get_bloginfo('description');
} ?>
<meta name="description" content="<?php echo $description; ?>" />

get_the_author() がループ中でしか使えなかったのでそこだけなんとのかっこ悪い感じである。著者別ページなんて見ても面白くもなんともないので必要無いとは思いますが一応。俺もURLしらなくて ?author=1 とかURLにつけて確認したぐらいだし。

Sponsored Link

シェアする

フォローする