【WordPress】カスタムフィールドを設置してSEO系プラグインを不要にするカスタマイズ!

急遽テーマを変更することになり、そのついでに行ったカスタマイズをメモしておきます。

内容はずっとやりたかったカスタムフィールド(投稿編集画面の下の方)の設置。

カスタムフィールドを設置してSEO系プラグインを外しました。

 

【 WordPress】カスタムフィールド

こんな感じのものを設置。

これでSEO系プラグインを入れずに、SEOタイトル・説明文、noindexの設定を出来るようになりました。

 

目次

function.phpにコードを追加

// カスタムフィールド追加
add_action('admin_menu', 'add_custom_fields');
add_action('save_post', 'save_custom_fields');

function add_custom_fields() {
  add_meta_box( 'my_sectionid', 'SEO対策', 'my_custom_fields', 'post');
}

function my_custom_fields() {
  global $post;
  $seo_title = get_post_meta($post->ID,'seo_title',true);
  $meta_description = get_post_meta($post->ID,'meta_description',true);
  $noindex = get_post_meta($post->ID,'noindex',true);
  if($noindex==1){ $noindex_c="checked";}
  else{$noindex_c= "/";}
  echo '<p>※フォームは横いっぱいに入力して30文字</p>';
  echo '<p>SEOタイトル(30文字程度)<br />';
  echo '<input type="text" name="seo_title" value="'.esc_html($seo_title).'" size="59" /></p>';
  echo '<p>SEO説明文(PC120文字程度、スマホ50文字程度)<br />';
  echo '<input type="text" name="seo_description" value="'.esc_html($seo_description).'" size="59" /></p>';
  echo '<p>低品質コンテンツをnoindexにする場合はチェック<br />';
  echo '<input type="checkbox" name="noindex" value="1" ' . $noindex_c . '> noindex</p>';
}

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

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

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

まずは、function.phpに上記コードを追加します。

SEO説明文を入力する枠は、はじめ<textarea>で設置したんですが、<textarea>だと上手く値の保存が出来なかったので、渋々<input>にしました。

<textarea name="meta_description" value="'.esc_html($meta_description).'" rows="4" cols="58" wrap="hard"></textarea>

<input type="text" name="seo_description" value="'.esc_html($seo_description).'" size="59" />

 

header.phpにコードを追加

次に、header.phpの<head></head>内に以下のコードをそれぞれ入力。

 

<!-- SEOタイトル -->
 <title>
 <?php if(is_front_page()): // トップページ ?>
 <?php bloginfo( 'name' ); ?>|海外旅行・世界一周・WordPressについてのブログ
 <?php elseif(is_single()): // 投稿ページ ?>
 <?php
 $custom_fields = get_post_meta( $post->ID, 'seo_title', true );
 if(empty( $custom_fields ) === false){ ?>
 <?php $key="seo_title"; echo get_post_meta($post->ID, $key, true); ?>
 <?php } else { ?>
 <?php wp_title(''); ?>
 <?php } ?>
 <?php elseif(is_page()): // 固定ページ ?>
 <?php wp_title(''); ?>
 <?php elseif (is_category()): // カテゴリーページ ?>
 <?php wp_title( 'の記事一覧|', true, 'right' );?> <?php bloginfo( 'name' ); ?>
 <?php elseif (is_tag()): // タグページ ?>
 <?php wp_title( 'の記事一覧|', true, 'right' );?> <?php bloginfo( 'name' ); ?>
 <?php elseif(is_404()): // 404ページ ?>
 <?php wp_title( '|', true, 'right' );?> <?php bloginfo( 'name' ); ?>
 <?php else: // その他ページ ?>
 <?php wp_title( '|', true, 'right' );?> <?php bloginfo( 'name' ); ?>
 <?php endif; ?>
 </title>
<!-- SEO説明文 -->
 <?php if(is_front_page()): // トップページ ?>
 <meta name="description" content="<?php bloginfo( 'description' ); ?>" />
 <?php elseif(is_single()): // 投稿ページ ?>
 <?php
 $custom_fields = get_post_meta( $post->ID, 'meta_description', true );
 if(empty( $custom_fields ) === false){ ?>
 <meta name="description" content="<?php $key="meta_description"; echo get_post_meta($post->ID, $key, true); ?>">
 <?php } else { ?>
 <?php } ?>
 <?php else: // その他ページ ?>
 <?php endif; ?>
<!-- noindex設定 -->
 <?php if(is_home()): // トップページ ?>
 <meta name="robots" content="index, follow" />
 <?php elseif(is_single()): // 投稿ページ ?>
 <?php if(get_post_meta(get_the_ID(),'noindex',true)==1){ ?><meta name="robots" content="noindex"><?php } ?>
 <?php elseif(is_page()): // 固定ページ ?>
 <meta name="robots" content="noindex, follow" />
 <?php elseif (is_category()): // カテゴリーページ ?>
 <meta name="robots" content="index, follow" />
 <?php elseif (is_tag()): // タグページ ?>
 <meta name="robots" content="noindex, follow" />
 <?php elseif(is_404()): // 404ページ ?>
 <meta name="robots" content="noindex, follow" />
 <?php else: // その他ページ ?>
 <meta name="robots" content="noindex, follow" />
 <?php endif; ?>

ついでにページの種類によって、どのような設定にするのかも書き込みました。

以上で、カスタムフィールドにSEO設定を追加出来ました。

よかったらシェア!

コメントする

コメントする

※日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次
閉じる