
実務で内部SEOの実装をします。新規サイト制作はオリジナルの自作コードを使用しますが、既存サイトでプラグイン「All In One SEO」が使用されている場合は、そのプラグインを有効化した上で、要件に応じて自作のコードも使用します。割と時間を要したのでやった対応を記録しておきます。
対応した内部SEO
- TD設定、OGP設定 👉All In One SEOを使用
- XMLサイトマップ作成 👉All In One SEOを使用
- 構造化 👉自作コードを使用
- canonical 👉自作コードを使用
※上記以外(noindex設定)はすべて自作コードで対応。
TD設定、OGP設定
All In One SEOを使用した理由
既にある固定ページの中で、タイトルとディスクリプションが設定されているものがありました。
そのため、今回自作せずAll In One SEOをそのまま使用することを決定。
浮上した問題
404ページは、タイトル・ディスクリプション・OGPが管理画面から設定できません。
そのため404ページのみ、タイトル・ディスクリプション・OGPの設定を自作しました。
※具体的な自作コードは以下に紹介しております。
TDとOGPの設定
固定ページの下にあるAll In One SEOの設定部分で、タイトルとディスクリプションが設定できるので、基本的にはそこで設定しました。
投稿記事一覧ページは、検索の外観>アーカイブのかなり下の方に入力欄があるのでそこで入力しました。
OGP画像は、ソーシャルネットワーク>FacecookとX(Twitter)で設定できます。
その他デフォルトから変更した設定
OGP画像は、ソーシャルネットワーク>FacecookとX(Twitter)のデフォルトの投稿画像ソースで設定できます。
デフォルトのままだと、投稿記事のOGP画像がここで設定したOGP画像になります。
ただ私の案件の場合、投稿記事のOGP画像は投稿のアイキャッチ画像になってほしいので、以下のように変更しました


もし投稿記事にアイキャッチが設定されていない場合は、設定したOGP画像が表示されます!
XMLサイトマップ作成
All In One SEOを使用した理由
プラグインに備わっているためそのまま使用しました。
XMLサイトマップ作成
基本的には自動出力されるのでそのまま使用します。
ただし、noindexに設定したページは除外したいので、サイトマップ>一般的なサイトマップの高度な設定で、以下のようにお問い合わせのサンクスページを除外しました。

※参考:公式のドキュメント
構造化
All In One SEOを使用しなかった理由
以下がネックとなり、自作コードを使用しました。
- WebSitePageが全ページに出力された。また固有のページにのみ出力することが出来なかった。(調べると全ページ出力されるのは問題ないようだが、自分の案件ではTOPにのみ出力したかったため、ネックとなった)
- 構造化のカスタマイズをする場合、Pro版に登録する理由がある
構造化の対応
functions.phpに以下コードを追加し、All In One SEOの構造化を無効化しました。
その後、自作コードで構造化の実装を行いました。
/**
* サイト全体でAIOSEOの構造化データを無効化する
*
* @param bool $disabled 現在の無効化状態(デフォルトはfalse)
* @return bool 常にtrueを返し、全体で無効化する
*/
function disable_aioseo_schema_globally( $disabled ) {
return true;
}
add_filter( 'aioseo_schema_disable', 'disable_aioseo_schema_globally' );
※コード参考:
canonical
All In One SEOを使用しなかった理由
案件の仕様により、投稿記事一覧の1ページ目、2ページ目のURLをデフォルトのものから変えており、その固有のURLをcanonicalタグの中に入れたかったため使用しませんでした。
イメージ的には、以下のような出力をしたかった!けど、
投稿記事一覧の1ページ目
<link rel=”canonical” href=”http://test.com/news/” />
投稿記事一覧の2ページ目
<link rel=”canonical” href=”http://test.com/news/page/2/” >
プラグインを使用すると、以下のような出力になるため使用しませんでした。
投稿記事一覧の1ページ目
<link rel=”canonical” href=”http://test.com/news/” />
投稿記事一覧の2ページ目
<link rel=”canonical” href=”http://test.com/news/” >

1 ページ目だけが検索結果に出てくれば問題ないと判断したのであれば、プラグインを使用した方がいいかも?
※ふきだし内容の参考:

canonicalの対応
functions.phpに以下コードを追加し、All In One SEOのcanonicalの出力を無効化しました。
その後、自作コードでcanonicalの実装を行いました。
// all in one seo からcanonicalタグ除外
add_filter( 'aioseo_canonical_url', '__return_empty_string' );
終わりに
まとめてみると、「たったこれだけ?」という内容でしたが笑、
SEOのプラグインが入っているため、基本的にはプラグインの機能を優先的に使用したいという思いがありました。
機能を優先的に使用し、カスタマイズが必要な部分は自作しようと思っていたのですが、実際にやってみると
- 管理画面のどこで設定できるのか?(そもそも管理画面で設定できるの?)
- 出力されるコードはどんなものなの?(内容の理解、自作コードとの比較)
- カスタマイズできないなら、どうやって無効化するの?
など調べながらやると、結構時間を要したのでこちらに記録しておきます✍️