wordpressで投稿・固定ページごとのdescriptionとkeywordsの設定枠をプラグインなしで設置する方法
2015 June 23
wordpressでページごとの description,keywords のメタ情報を設定する場合、「All in One SEO Pack」などのプラグインを使えば簡単にできますが、できればプラグインは使いたくない。今回はカスタムフィールドを利用して、プラグインなしでページごとのdescription と keywords の設定枠を設置する方法です。
やりたいこと
・各投稿・固定ページにdescriptionとkeywordsを設定する
・プラグインは使わない
・descriptionは本文からの抜粋ではなく、オリジナルで設定する
→ 全ページで入力することになるので、更新があまりないコーポレートサイトやページ数の少ないサイト向けかもしれません。
・プラグインは使わない
・descriptionは本文からの抜粋ではなく、オリジナルで設定する
→ 全ページで入力することになるので、更新があまりないコーポレートサイトやページ数の少ないサイト向けかもしれません。
カスタムフィールドとは?
カスタムフィールドとは、WordPressの投稿画面に任意の情報(メタデータ)を追加する機能のことです。カスタムフィールドを利用することで、アイデア次第ではWebサイトを色々拡張できます。メタデータは「名前」と、その「値」の組み合わせからなっていて、「名前」はメタデータ要素の名称、「値」はその要素に対応する情報を指します。一般的には、固定された「名前」に対し、記事によって異なる「値」を記入します。
» カスタムフィールドの使い方
» カスタムフィールドの使い方
ソース
functions.phpに下記を追記
<?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; $keywords = get_post_meta($post->ID,'keywords',true); $description = get_post_meta($post->ID,'description',true); echo '<p>キーワード(半角カンマ区切り)<br>'; echo '<input type="text" name="keywords" value="'.esc_html($keywords).'" size="60" /></p>'; echo '<p>ページの説明(description)160文字以内<br>'; echo '<input type="text" style="width: 600px;height: 40px;" name="description" value="'.esc_html($description).'" maxlength="160" /></p>'; } // カスタムフィールドの値を保存 function save_custom_fields( $post_id ) { 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'); } function my_description() { // カスタムフィールドの値を読み込む $custom = get_post_custom(); 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="トップページに表示させるkeywords(半角カンマ区切り)"> <meta name="description" content="トップページに表示させるdescription" /> <?php elseif(is_single()): // 記事ページ ?> <meta name="robots" content="index, follow" /> <meta name="keywords" content="<?php echo $keywords ?>"> <meta name="description" content="<?php echo $description ?>"> <?php elseif(is_page()): // 固定ページ ?> <meta name="robots" content="index, follow" /> <meta name="keywords" content="<?php echo $keywords ?>"> <meta name="description" content="<?php echo $description ?>"> <?php elseif (is_category()): // カテゴリーページ ?> <meta name="robots" content="index, follow" /> <meta name="description" content="<?php single_cat_title(); ?>の記事一覧" /> <?php elseif (is_tag()): // タグページ ?> <meta name="robots" content="noindex, follow" /> <meta name="description" content="<?php single_tag_title("", true); ?>の記事一覧" /> <?php elseif(is_404()): // 404ページ ?> <meta name="robots" content="noindex, follow" /> <title><?php echo 'お探しのページが見つかりませんでした'; ?></title> <?php else: // その他ページ ?> <meta name="robots" content="noindex, follow" /> <?php endif; ?> <?php }
404エラーページと上記以外のページは、検索エンジンに登録されないようにする noindexタグを入れています。
このようにページごとの meta情報を指定する場合など、自由に設定できます。
header.phpにタグを追記
header.php 内の title タグ下あたりに下記タグを入れます。
このタグの位置に description と keywords が表示されます。
<?php my_description(); ?>
以上で、投稿画面に入力枠が表示されるようになります。
指定した description,keywords がソースコードに反映されているか確認してください。
プラグインは便利な反面、サイトが重くなったりDDoSアタックの的になったり恐い一面も。
できるだけオリジナルのプログラムでサイト運営できるように、少しずつプラグインから脱却していければいいなと思います^O^
参考にした記事:WordPressのカスタムフィールドを使用したSEO対策施工の流れ