wordpressでの自前SEO対策

超有名プラグインAll in One SEOを削除

新年あけましておめでとうございます。清原です。さて、今年いきなりですがWordpressで作られている弊社のサイトに使われているプラグインAll in One SEOとサヨナラすることにしました。All in One SEOは知らない人など居ないくらい有名なプラグインで、世界中で愛され使用されており、弊社のホームページができた当初から愛用していたプラグインでもあります。ビックリするくらい様々な機能があり、有料となればもう至れり尽くせりのサービスが受けられるのですが、弊社では一部の機能しか必要でなかったため「削除」するに至りました。他の方も仰られていますが「重い」というのもあります。

function.phpに替わりのカスタムフィードを作る

All in One SEOを削除してしまったら勿論、今まで書き込んでいたmeta keywordsやmeta descriptionも無くなってしまいます。それはSEO的に流石にまずいので代わりにカスタムフィールドを使いメタタグの内容を書き込めるようにします。トップページを固定ページなどで指定している場合はそちらに書き込んでください。

// keywords description
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>ディスクリプション 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 (isset($_POST['keywords'])) {
    if (!empty($_POST['keywords'])) {
      update_post_meta($post_id, 'keywords', $_POST['keywords']);
    }
    else {
      delete_post_meta($post_id, 'keywords');
    }
  }

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

function MataTitle() {
// カスタムフィールドを読み込む
$custom = get_post_custom();
if(!empty( $custom['keywords'][0])) {
$keywords = $custom['keywords'][0];
}
if(!empty( $custom['description'][0])) {
$description = $custom['description'][0];
}
if(is_home()){// トップページ
echo '<meta name="keywords" content="'.$keywords.'">';
echo '<meta name="description" content="'.$description.'">';
}elseif(is_single()){// 記事ページ
echo '<meta name="keywords" content="'.$keywords.'">';
echo '<meta name="description" content="'.$description.'">';
}elseif(is_page()){// 固定ページ
echo '<meta name="keywords" content="'.$keywords.'">';
echo '<meta name="description" content="'.$description.'">';
}elseif(is_archive()){// 記事ページ
echo '<meta name="keywords" content="'.$keywords.'">';
echo '<meta name="description" content="'.$description.'">';
}elseif(is_category()){// カテゴリーページ
echo '<meta name="description" content="'.single_cat_title().'の記事一覧">';
}elseif(is_tag()){// タグページ
echo '<meta name="robots" content="noindex, follow">';
echo '<meta name="description" content="'.single_tag_title("", true).'の記事一覧">';
}elseif(is_404()){// 404ページ
echo '<meta name="robots" content="noindex, follow">';
echo '<title>404:お探しのページが見つかりませんでした</title>';
}else{// その他ページ
echo '<meta name="robots" content="noindex, follow">';
};
}

こちらのソースは何処かのサイトさんからコピーしたものになりますが、該当サイトを忘れてしまい出典先不明となっています。申し訳ございません。

head.phpに出力タグを書き込む

そしてfunction.phpでつくったカスタムフィールドをheader.phpに吐き出させるようにします。方法はとても簡単でheader.phpのwp_headの下辺りに

<?php MataTitle(); ?>

を書き込みます。以上でmeta keywordsとmeta descriptionの追加は終わりです。どうでしょう?簡単だってですよね。成功すると記事投稿ページや固定ページでは下記のように表示されます。
追加

All in One SEOのメタを引き継ぐ

これだけではただ書き込めるようになっただけで今までの投稿された記事のキーワードやディスクリプションは空白になってしまいますので、All in One SEOで書き込んた値を引き継ぐようにします。方法は簡単なのですが一歩間違ったらサイトが終了してしまいますので必ずデータベースのバックアップを取っておいてください。

update wp_postmeta set meta_key=replace(meta_key, "_aioseo_description", "description")


update wp_postmeta set meta_key=replace(meta_key, "_aioseo_keywords", "keywords")

データベースにphpMyAdminなどでログインしwordpressのデータベースの中にあるご自身で付けた接頭辞_postmetaのテーブルを選択し(デフォルトですとwp_postmeta)

 

これ

 

上記のコードを一行づつで良いのでコピペしSQLを実行します。

 

コピペ

 

実行は一瞬で終わります。その他、色々と不要なゴミがいっぱい残っていますが、問題なく動きますし見なかったことにしましょう(笑)。

All in One SEOを卒業してみて

All in One SEOのプラグインが重い多機能すぎなど全く気にならない人、無料バージョンで満足している人はそのまま使い続けて良いのではないでしょうか?正直なところ、途中までやってしまったので仕方なく最後までやった感じがありますし、なんなら有料契約しても良かったのではと思います。また、All in One SEOなどのSEO対策プラグインを入れなくてもテンプレートそのものでSEO対策済なCocoonさんのようなめちゃくちゃ素晴らしいテンプレートもチラホラ出てきておりますのでテンプレートそのものを変えてみるのも手かもしれません。因みにCocoonさんの回し者ではありませんが、これからwordpressでホームページを持とうと考えている方はCocoonさん、めちゃくちゃオススメですよ。

コメントを書く

日本語が含まれない投稿はスパムとなります。