All in One SEO Packが出力するprev/nextリンクをトップページから除去する方法

今回は、別サイトでやったことのメモ。
All in One SEO Packが自動で出力するlink rel=’prev’、link rel=’next’の除去について。
All in One SEO Pack は多機能で素晴らしいプラグインなのですが、いざ使おうとするといろいろと気になる点が出てきます。
その一つが、意図しないページでprev/nextリンクが出力されること。
デフォルトでは、以下のように次ページ(及び前ページ)へのリンクが出力されます。

<!-- All in One SEO Pack -->
<link rel='next' href='https://webmemo.work/page/2/' />
<!-- /all in one seo pack -->

本来はSEO的に良いとされるこれらのリンクですが、連続しないページで出力されたり、テーマや他のプラグインと競合する場合があります。
特に、サイトのトップページでも出力されてしまうのは困りものです。

リンクを出力しない方法

以下の記述をfunctions.phpに追記することで、リンクを削除(出力しないように)することができます。

add_filter('aioseop_prev_link', '__return_empty_string');
add_filter('aioseop_next_link', '__return_empty_string');

トップページでだけリンクを出力しない方法

ここからが本題。
リンク自体は問題ではなく、意図しないページでリンクが出力されることが問題なのです。
そこで、上記の記述に条件分岐を追加しましょう。
以下の記述をfunctions.phpに追記することで、トップページでのみ、リンクを出力しないようにできます。

function remove_aioseop_prev_next_link() {
  if(is_front_page() || is_home()) {
    add_filter('aioseop_prev_link', '__return_empty_string');
    add_filter('aioseop_next_link', '__return_empty_string');
  }
}
add_action('pre_get_posts', 'remove_aioseop_prev_next_link');

ポイントは、アクションフックを使用すること。
functions.phpが読み込まれるタイミングでは、is_home()やis_front_page()を使用するためのページ情報がまだ取得されていません。
そこで、アクションフックを用いることで任意のタイミングで処理を実行しています。
フックにはpre_get_postsを指定していますが、本来どのタイミングが最適なのかわかっておらず……この辺りはまだまだ勉強が必要ですね。