WordPressのカスタムフィールドを使用したSEO対策施工の流れ

SEOを設定する時、Wordpressでは大多数の人がプラグインで設定していますよね。実はカスタムフィールドを代用することも出来るんです。今回はfunctions.phpでカスタマイズしたメタ情報とページタイトルを出力する方法をご紹介します。

カスタムフィールドの設定

カスタムフィールドは投稿画面の「投稿」→「表示オプション」→「カスタムフィールド」にチェックを入れると簡単に表示されます。今回はfunctions.phpに記述していきますので、チェックを入れる必要はありません。(表示させるとカスタムフィールドが重複するので注意)

カスタムフィールドの追加

それでは「投稿」「固定ページ」へカスタムフィールドを追加していきましょう。

//-----------------------------------------
// 投稿・固定ページ カスタムフィールド追加
//-----------------------------------------
add_action('admin_menu', 'add_custom_fields');
add_action('save_post', 'save_custom_fields');

function add_custom_fields() {
  add_meta_box( 'my_sectionid', 'カスタムフィールド', 'my_custom_fields', 'post');
  add_meta_box( 'my_sectionid', 'カスタムフィールド', 'my_custom_fields', 'page');
}

//-----------------------------------------
// カスタムフィールド表示
//-----------------------------------------
function my_custom_fields() {
  global $post;
  $robots = get_post_meta($post->ID,'robots',true);
  $keywords = get_post_meta($post->ID,'keywords',true);
  $description = get_post_meta($post->ID,'description',true);
  
  echo '<p>検索ロボット(カンマ区切り)<br />';
  echo '<input type="text" name="robots" value="'.esc_html($robots).'" size="50" /></p>';
  
  echo '<p>キーワード(カンマ区切り)<br />';
  echo '<input type="text" name="keywords" value="'.esc_html($keywords).'" size="50" /></p>';
  
  echo '<p>ページの説明<br />';
  echo '<input type="text" name="description" value="'.esc_html($description).'" size="50" /></p>';
}

//-----------------------------------------
// カスタムフィールドの値を保存
//-----------------------------------------
function save_custom_fields( $post_id ) {
  if(!empty($_POST['robots']))
    update_post_meta($post_id, 'robots', $_POST['robots'] );
  else delete_post_meta($post_id, 'robots');

  if(!empty($_POST['keywords']))
    update_post_meta($post_id, 'keywords', $_POST['keywords'] );
  else delete_post_meta($post_id, 'keywords');

  if(!empty($_POST['description']))
    update_post_meta($post_id, 'description', $_POST['description'] );
  else delete_post_meta($post_id, 'description');
}

カスタムフィールド完成図

投稿(固定)ページ画面で図のように表示されているのを確認して下さい。
※WordPressのバーションによって見え方が異なります。

カスタムフィールド

参考サイト
【WordPress】プラグインなしでカスタムフィールド設置!All in One SEOも不要に

ページ毎のメタ情報とタイトル

上記カスタムフィールドの値の読込みと出力形式の設定を行います。

//-----------------------------------------
// ページ毎のmata要素とtitleの設定
//-----------------------------------------
function MataTitle() {

// カスタムフィールドの値を読み込む
$custom = get_post_custom();
if(!empty( $custom['robots'][0])) {
  $robots = $custom['robots'][0];
}
if(!empty( $custom['keywords'][0])) {
  $keywords = $custom['keywords'][0];
}
if(!empty( $custom['description'][0])) {
  $description = $custom['description'][0];
}
?>
<?php if(is_home()): // トップページ ?>
<meta name="robots" content="index, follow" />
<meta name="keywords" content="キーワード1, キーワード2, キーワード3">
<meta name="description" content="サイトの説明文を入れて下さい。" />
<title><?php bloginfo('name'); ?></title>
<?php elseif(is_single()): // シングルページ ?>
<meta name="robots" content="index, follow" />
<meta name="keywords" content="<?php echo $keywords ?>">
<meta name="description" content="<?php echo $description ?>">
<title><?php wp_title('|',true,'right'); bloginfo('name'); ?></title>
<?php elseif(is_page()): // 固定ページ ?>
<meta name="robots" content="<?php echo $robots ?>" />
<meta name="keywords" content="<?php echo $keywords ?>">
<meta name="description" content="<?php echo $description ?>">
<title><?php wp_title('|',true,'right'); bloginfo('name'); ?></title>
<?php elseif (is_category()): // カテゴリーページ ?>
<meta name="robots" content="index, follow" />
<meta name="description" content="<?php single_cat_title(); ?>の記事一覧" />
<title><?php single_cat_title(); ?>の記事一覧 | <?php bloginfo('name'); ?></title>
<?php elseif (is_tag()): // タグページ ?>
<meta name="robots" content="noindex, follow" />
<meta name="description" content="<?php single_tag_title("", true); ?>の記事一覧" />
<title><?php single_tag_title(); ?>の記事一覧 | <?php bloginfo('name'); ?></title>
<?php elseif(is_404()): // 404ページ ?>
<meta name="robots" content="noindex, follow" />
<title><?php echo 'お探しのページが見つかりませんでした'; ?></title>
<?php else: // その他ページ ?>
<meta name="robots" content="noindex, follow" />
<title><?php wp_title('|',true,'right'); bloginfo('name'); ?><?php bloginfo('name'); ?></title>
<?php endif; ?>
<?php
}

固定ページのみ<meta name="robots">を個別に指定できるようにしています。サイトの構造に合わせてカスタマイズして頂いて結構です。

headerに出力コードを設置

<?php MataTitle(); ?>

上記のコードをheader.php内に記述するとページの毎のメタ情報とタイトルが出力されます。ソースコードでご確認ください。ページ毎の設定通りに反映されていれば、これで設置はすべて完了となります。

追記

【2015年10月】ご指摘がございましたので、コメントタグと一部修正を加えました。