条件によって詳細を出力しわける – メタ デスクリプションのセッティング

ワードプレスのメモ

SEO関係のプラグインなしでmetaを設定する場合の一例、description編です。

これもいろいろな記事があるのですが、コピペでは動作しないことが多々ありましたので、うまくいった例をメモっておきます。

<meta name="description" content="
	<!-- 固定ページならば -->
	<?php if(is_page()): ?>
		<?php if(get_post_meta($post->ID, 'pageDescription', true)): ?>
			<?php echo get_post_meta($post->ID,"pageDescription",true); ?>
		<?php else : ?>
			<?php echo_meta_description_tag(); ?>
		<?php endif; ?>
	<!-- カテゴリーならば -->
	<?php elseif( is_category()): ?>
		<?php echo strip_tags(tag_description()); ?>
	<!-- カスタム投稿タイプのアーカイブならば -->
	<?php elseif( get_post_type()=='カスタム投稿タイプ名' and is_archive() ): ?>
		カスタム投稿タイプのアーカイブで表示したいdescription
	<?php else : ?>
	<!-- 上記条件以外ならば -->
		<?php echo_meta_description_tag(); ?>
	<?php endif; ?>
" />

この例では固定ページ、カテゴリー、カスタム投稿タイプ、シングルで分けています。

(月別の条件も必要かも??)

 

  • 固定ページでは、カスタムフィールドで「要約」フィールドを設置して引っ張ってくる。このフィールドに入力されていない場合は、記事本文から要約を作り出す。
  • カテゴリーならば、カテゴリーごとの「説明」を引っ張ってくる。
  • カスタム投稿タイプのアーカイブならヘッダーに直書きした文章を出力する。
  • 上記以外ならば、記事本文から要約を作り出して出力する。

 

カスタム投稿タイプのケースが不細工ですが、functions.phpに書いたカスタム投稿タイプのdescriptionを出力する方法がうまく動かなかったので応急処置。

また、上記条件から漏れる場合の処理はしていませんが、「ブログのキャッチフレーズ」から引っ張ってきてもあまり良い効果はないと思い放置。

 

要約をヘッダーに出力する記事例もたくさん見かけたのですが、どうにもうまく動きません。

そこで見つけたのが、下記の記事。関数書いて処理しています。

WordPressでmeta descriptionを設定(プラグインなし版)

これがうまく動いて感動。アレンジするまでもなくマッチしたので、ほんとにコピペです。

// get meta description from the content
function get_meta_description() {
  global $post;
  $description = "";
  if ( is_category() ) {
    // カテゴリーページでは、カテゴリーの説明文を取得
    $description = category_description();
  }
  elseif ( is_single() or is_page() ) {
    if ($post->post_excerpt) {
      // 記事ページでは、記事本文から抜粋を取得
      $description = $post->post_excerpt;
    } else {
      // post_excerpt で取れない時は、自力で記事の冒頭100文字を抜粋して取得
      $description = strip_tags($post->post_content);
      $description = str_replace("\n", "", $description);
      $description = str_replace("\r", "", $description);
      $description = mb_substr($description, 0, 100) . "...";
    }
  } else {
    ;
  }
 
  return $description;
}
// echo meta description tag
function echo_meta_description_tag() {
  if ( is_category() || is_single() || is_page() ) {
	echo get_meta_description();
  }
}

カスタム投稿タイプのケースもスマートに処理したいので、格闘を続けます。

All in one SEOなどのプラグインを入れれば解決する話ですが、その手のプラグインを更新したらサイト全部が文字化けした経験があり、めんどくさいことをやっています。

今どきはもうそんなことないんだろうけど、、、