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月】ご指摘がございましたので、コメントタグと一部修正を加えました。
時々、カスタムフィールドの中身が空になってしまうのですが、原因はわかりますか?
また、その対策方法などありましたら教えてください。
返信が遅くなり申し訳ございません。
上記ご質問ですが当方では問題なく動作しております。
しかし、今後のために原因を究明したいと思いますので、暫くお時間を頂ければと思います。
よろしくお願いいたします。
ページ毎のメタ情報とタイトル
のスクリプトの最後が
<?php
で途切れています。このままではエラーに成ってしまいました。
改善方法とかありますか?
申し訳ありません。少々書き方に不備がありましたので修正を入れたものに差し替え致しました。
お手数ですが修正した記事のコードを一度、functions.phpの【】の間に記述して、ご確認頂けると幸いです。よろしくお願い致します。