Enjoy Creative! かわたまのwebメモ

著:かわたま氏

wordpressで投稿・固定ページごとのdescriptionとkeywordsの設定枠をプラグインなしで設置する方法第08回 16年04月更新

 

wordpressでページごとの description,keywords のメタ情報を設定する場合、「All in One SEO Pack」などのプラグインを使えば簡単にできますが、できればプラグインは使いたくない。今回はカスタムフィールドを利用して、プラグインなしでページ ごとのdescription と keywords の設定枠を設置する方法です。

■やりたいこと

・各投稿・固定ページにdescriptionとkeywordsを設定する
・プラグインは使わない
・descriptionは本文からの抜粋ではなく、オリジナルで設定する
→ 全ページで入力することになるので、更新があまりないコーポレートサイトやページ数の少ないサイト向けかもしれません。

■カスタムフィールドとは?

カスタムフィールドとは、WordPressの投稿画面に任意の情報(メタデータ)を追加する機能のことです。カスタムフィールドを利用することで、アイデア次第ではWebサイトを色々拡張できます。メタデータは「名前」と、その「値」の組み合わせからなっていて、「名前」はメタデータ要素の名称、「値」 はその要素に対応する情報を指します。一般的には、固定された「名前」に対し、記事によって異なる「値」を記入します。
» カスタムフィールドの使い方

■ソース

functions.phpに下記を追記

  1. 1.<?php
  2. 2.// functions.phpに以下を追記
  3. 3.add_action(‘admin_menu’, ‘add_custom_fields’);
  4. 4.add_action(‘save_post’, ‘save_custom_fields’);
  5. 5.
  6. 6.// 記事ページと固定ページでカスタムフィールドを表示
  7. 7.function add_custom_fields() {
  8. 8.  add_meta_box( ‘my_sectionid’, ‘カスタムフィールド’, ‘my_custom_fields’, ‘post’);
  9. 9.  add_meta_box( ‘my_sectionid’, ‘カスタムフィールド’, ‘my_custom_fields’, ‘page’);
  10. 10.}
  11. 11.
  12. 12.function my_custom_fields() {
  13. 13.  global $post;
  14. 14.  $keywords = get_post_meta($post->ID,’keywords’,true);
  15. 15.  $description = get_post_meta($post->ID,’description’,true);
  16. 16. 
  17. 17.  echo ‘<p>キーワード(半角カンマ区切り)<br>’;
  18. 18.  echo ‘<input type=”text” name=”keywords” value=”‘.esc_html($keywords).'” size=”60″ /></p>’;
  19. 19. 
  20. 20.  echo ‘<p>ページの説明(description)160文字以内<br>’;
  21. 21.  echo ‘<input type=”text” style=”width: 600px;height: 40px;” name=”description” value=”‘.esc_html($description).'” maxlength=”160″ /></p>’;
  22. 22.}
  23. 23.
  24. 24.// カスタムフィールドの値を保存
  25. 25.function save_custom_fields( $post_id ) {
  26. 26.  if(!empty($_POST[‘keywords’]))
  27. 27.    update_post_meta($post_id, ‘keywords’, $_POST[‘keywords’] );
  28. 28.  else delete_post_meta($post_id, ‘keywords’);
  29. 29.
  30. 30.  if(!empty($_POST[‘description’]))
    31.    update_post_meta($post_id, ‘description’, $_POST[‘description’] );
  1. 32.  else delete_post_meta($post_id, ‘description’);
  2. 33.}
  3. 34.
  4. 35.function my_description() {
  5. 36.
  6. 37.// カスタムフィールドの値を読み込む
  7. 38.$custom = get_post_custom();
  8. 39.if(!empty( $custom[‘keywords’][0])) {
  9. 40.  $keywords = $custom[‘keywords’][0];
  10. 41.}
  11. 42.if(!empty( $custom[‘description’][0])) {
  12. 43.  $description = $custom[‘description’][0];
  13. 44.}
  14. 45.?>
  15. 46.<?php if(is_home()): // トップページ ?>
  16. 47.<meta name=”robots” content=”index, follow” />
  17. 48.<meta name=”keywords” content=”トップページに表示させるkeywords(半角カンマ区切り)”>
  18. 49.<meta name=”description” content=”トップページに表示させるdescription” />
  19. 50.<?php elseif(is_single()): // 記事ページ ?>
  20. 51.<meta name=”robots” content=”index, follow” />
  21. 52.<meta name=”keywords” content=”<?php echo $keywords ?>”>
  22. 53.<meta name=”description” content=”<?php echo $description ?>”>
  23. 54.<?php elseif(is_page()): // 固定ページ ?>
  24. 55.<meta name=”robots” content=”index, follow” />
  25. 56.<meta name=”keywords” content=”<?php echo $keywords ?>”>
  26. 57.<meta name=”description” content=”<?php echo $description ?>”>
  27. 58.<?php elseif (is_category()): // カテゴリーページ ?>
  28. 59.<meta name=”robots” content=”index, follow” />
  29. 60.<meta name=”description” content=”<?php single_cat_title(); ?>の記事一覧” />
  30. 61.<?php elseif (is_tag()): // タグページ ?>
  31. 62.<meta name=”robots” content=”noindex, follow” />
  32. 63.<meta name=”description” content=”<?php single_tag_title(“”, true); ?>の記事一覧” />
  33. 64.<?php elseif(is_404()): // 404ページ ?>
  34. 65.<meta name=”robots” content=”noindex, follow” />
  35. 66.<title><?php echo ‘お探しのページが見つかりませんでした’; ?></title>
  36. 67.<?php else: // その他ページ ?>
  37. 68.<meta name=”robots” content=”noindex, follow” />
  38. 69.<?php endif; ?>
  39. 70.<?php
  40. 71.}

404エラーページと上記以外のページは、検索エンジンに登録されないようにする noindexタグを入れています。
このようにページごとの meta情報を指定する場合など、自由に設定できます。

■header.phpにタグを追記

header.php 内の title タグ下あたりに下記タグを入れます。
このタグの位置に description と keywords が表示されます。

以上で、投稿画面に入力枠が表示されるようになります。
指定した description,keywords がソースコードに反映されているか確認してください。

かわたま20160420-1

プラグインは便利な反面、サイトが重くなったりDDoSアタックの的になったり恐い一面も。
できるだけオリジナルのプログラムでサイト運営できるように、少しずつプラグインから脱却していければいいなと思います^O^

参考にした記事:WordPressのカスタムフィールドを使用したSEO対策施工の流れ