WordPressでサイトを構築する際に、TDK(title, description, keyword)の設定を行う上でとても便利なプラグイン「All in One SEO」というものがあります。
自動で適切なdescriptionにしてくれたり、SNS向けのmeta情報を出力してくれたりします。
しかし、便利とはいってもプラグインですので、こちらの細かい要望には応えてくれないことがあります。
SEO対策で細かくTDKを設定するために「All in One SEO」のルールに則っていない記述をしたい、という場合もありますし、
「All in One SEO」では一覧ページで description が出なかったり、
カスタム投稿で URL を rewrite している時などに正しい canonical が出なかったり、と色々あります。
そんな場合でも任意の設定をすることが出来るようにフィルターフックが設けられています。
これを使ったカスタマイズについて纏めました。
それぞれのカスタマイズについて
全てfunctions.phpに記述します。
title のカスタマイズ
例:タイトルに任意のカスタムフィールドの値を入れたい場合。
1 2 3 4 5 6 7 8 9 10 11 12 | function my_aioseop_title($title) { global $post; global $post_type; if(is_singular() && $post_type == 'works') { $metas = get_post_meta($post->ID); $title = get_the_title() . ' – ' . $metas['subtitle'][0] . ' – 東京のホームページ制作 / WEB制作会社 BRISK'; } return $title; } add_filter('aioseop_title', 'my_aioseop_title'); |
description のカスタマイズ
例:カスタム投稿で editor を使っていない場合は自動的に description が生成されないので、以下のカスタマイズで設定してやる。
1 2 3 4 5 6 7 8 9 10 11 12 | function my_aioseop_description($description){ global $post; if ( get_post_type() == 'products' ) { $metas = get_post_meta($post->ID); $description = mb_strimwidth( strip_tags( str_replace(array("\r\n", "\r", "\n"), '', $metas['charactor'][0])), 0, 120, "…", "UTF-8"); } return $description; } add_filter('aioseop_description', 'my_aioseop_description'); |
keyword のカスタマイズ
例:ページのスラッグをkeywordに含める。
1 2 3 4 5 6 7 8 | function my_aioseop_keyword($keyword){ global $post; $keyword .= ',' . $post->post_name; return $keyword; } add_filter('aioseop_keyword', 'my_aioseop_keyword'); |
canonical のカスタマイズ
例:全ページ、アクセスしたURLで canonical を設定する。
1 2 3 4 5 6 | function my_aioseop_canonical_url($canonical_url){ $canonical_url = (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"] return $canonical_url; } add_filter('aioseop_canonical_url', 'my_aioseop_canonical_url'); |
参考にしていただければ幸いです。
2020年末にAll in One SEO Packがメジャーアップデートされ、All in One SEOと名前も変わった影響で、フィルターフックにも変更が入っているようです。
上記のすべての記述に関して、「aioseop_」の部分を「aioseo_」に変更する必要があります。
1 2 3 4 5 6 | function my_aioseo_canonical_url($canonical_url){ $canonical_url = (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"] return $canonical_url; } add_filter('aioseo_canonical_url', 'my_aioseo_canonical_url'); |
南本貴之