この実装、面倒なら代行します
WordPressっていつになればアーカイブ(一覧)ページのSEO用メタタグ情報(keyword,description)設定ができるようになるんでしょうか?
そう思っているWordPressエンジニアの方多いのではないでしょうか。
諸説ありますが、アーカイブページは詳細ページと内容が重複するからSEO用メタタグ情報はいらないという説もあります。
むしろnoindexにするサイトもあるそうです。
ですから、これからご紹介するのはあくまでアーカイブページにSEO用メタタグ情報を埋め込みたいと考える方向けです。
それでは、SEO用プラグインには All in one SEO Pack を使い、それにフィルターをかけて
カスタム投稿「blog」とカテゴリー「news」のアーカイブページに meta ディスクリプションを埋め込んでみます。
まず、カスタム投稿「blog」とカテゴリー「news」のmeta ディスクリプションを設定するためだけの中身空の固定ページを登録し、meta ディスクリプションを設定します。
このページがgoogleにインデックスされては困るのでnoindexに設定しましょう。
このページのIDを確認します。
カスタム投稿「blog」用の固定ページIDが998、カテゴリー「news」用の固定ページIDが999だったとすると、
テーマのfunctions.phpには以下のように記載します。
/* All In ONE SEOのaioseo_postsを$wpdbに対応させる */ function add_db_aioseo() { global $wpdb; $table_name = $wpdb->prefix. "aioseo_posts"; if (!isset($wpdb->aioseo_posts)) { $wpdb->aioseo_posts = $table_name; $wpdb->tables[] = str_replace($wpdb->prefix, '', $table_name); } } add_action( 'init', 'add_db_aioseo'); /* Ver3で運用していたがVer4になってしまったサイトにも対応 */ function aioseo_description_extention($description){ global $wpdb,$post; $pid = $post->ID; if(is_post_type_archive('blog')){ //カスタム投稿「blog」 $pid = 998; } elseif (is_category('news')){ //カテゴリー「news」 $pid = 999; } $desc0 = $wpdb->get_var($wpdb->prepare("SELECT description FROM $wpdb->aioseo_posts WHERE post_id = %d", $pid)); $desc1 = get_post_meta($pid, '_aioseo_description', true); $desc2 = get_post_meta($pid, '_aioseop_description', true); if ($desc0 != '' && $desc0 != '#post_content') { $description = $desc0; } elseif ($desc1 != '') { $description = $desc1; } elseif ($desc2 != '') { $description = $desc2; }else{ $description = get_the_excerpt($pid); } return $description; } add_filter('aioseo_description', 'aioseo_description_extention'); /* All in one SEO Ver3以前ならこちらだけでOK */ function aioseop_description_extention($description){ if(is_post_type_archive('blog')){ //カスタム投稿「blog」 $description = get_post_meta(998, '_aioseop_description', true); } if(is_category('news')){ //カテゴリー「news」 $description = get_post_meta(999, '_aioseop_description', true); } return $description; } add_filter('aioseop_description', 'aioseop_description_extention');
これで、ページがカスタム投稿「blog」かカテゴリー「news」のアーカイブページだった時に、それぞれ、固定ページID:998で設定したディスクリプション、固定ページID:999で設定したディスクリプションをmeta descriptionに出力させることができます。
※ 実はAll in one SEOがVer3までは割と簡単な記述だったんですが、Ver4でメジャーアップデートがあり、プラグインが個別に持つテーブルで管理するようになった関係で、結構面倒なコードとなりました。このあたりは「【All in One SEO】バージョン3系から4系になってmetaディスクリプションが短くなってしまった方へ」の記事で詳しく触れていますので興味のある方はどうぞ。
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!
100ウェブで手がけた制作・開発案件を一部、ご紹介。
クライアントからご相談いただいた内容とその実装におけるポイント、工期、予算について確認いただけます。
【テレワーク実施中 につきお電話転送中】
コール中1秒程度無音状態になりますがそのままお待ちください。
受付時間
平日 10:00~18:00
メールでのお問い合わせでも
1営業日以内にご連絡いたします。