
All in One SEOの404ページに、TDやOGPが出力されないんだけど…
※以下は404ページの、実際の出力
<!-- All in One SEO 4.8.2 - aioseo.com -->
<title></title>
<meta name="robots" content="noindex" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.8.2" />
<!-- All in One SEO -->
All in One SEOの設定画面にも見当たらない!
どうすれば良いのか調べ、以下2つを対応したので記録します。
対応1:404ページ用のTDとOGPの設定をheader.phpに記述
All in One SEOの404ページには、TDやOGPが出力されないため、header.phpに直書きします。
実際に書いたコードは以下。
<?php if (is_404()) : ?>
<!-- 404ページのみTD、OGP設定(プラグインで設定できなかった為) -->
<title>404 | <?php echo get_bloginfo('name'); ?></title>
<meta name="description" content="ページが見つかりませんでした" />
<meta name="robots" content="max-image-preview:large" />
<meta property="og:locale" content="ja_JP" />
<meta property="og:site_name" content="ブログタイトル | ブログのキャッチコピー" />
<meta property="og:type" content="article" />
<meta property="og:title" content="404 | ブログのタイトル" />
<meta property="og:description" content="ページが見つかりませんでした" />
<meta property="og:image" content="https://test.com/image/ogp.png" />
<meta property="og:image:secure_url" content="https://test.com/wp-content/uploads/2025/04/ogp.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="404 | ブログのタイトル" />
<meta name="twitter:description" content="ページが見つかりませんでした" />
<meta name="twitter:image" content="https://test.com/wp-content/uploads/2025/04/ogp.png" />
<?php endif; ?>

TOPなど、他のページに出力されているAll in one SEOの内容をそのまま貼り付け、404ページ用に修正しました。
ただし、以下のコードは除外してます。
① <meta name=”generator” content=”All in One SEO (AIOSEO) 4.8.2″ />
② <meta property=”article:published_time” content=”2024-11-28T08:25:21+00:00″ />
③ <meta property=”article:modified_time” content=”2025-05-09T08:14:15+00:00″ />
※コードの簡単な解説
①このページが All in One SEO(AIOSEO)というWordPress用のSEOプラグイン によって生成または最適化されたことを示しています。
②③構造化データの一種で、FacebookなどのSNSや検索エンジン向けに記事の公開日時や更新日時を伝えるためのものです。
対応2:All in one SEOの出力を404ページだけ除外する
実際に記述したコードは以下。functions.phpに記述しました。
// 404ページはAll in One SEOを出力しない設定
add_filter( 'aioseo_disable', 'aioseo_disable_term_output' );
function aioseo_disable_term_output( $disabled ) {
// 除外したいページのWP条件分岐タグを指定
if ( is_404() ) {
return true;
}
return false;
}
※参考

なぜこの除外が必要なのか?
この除外を行わないと、対応1で<title>を指定しても、以下のように空で出力されます。
<!-- All in One SEO 4.8.2 - aioseo.com -->
<title></title>
<meta name="robots" content="noindex" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.8.2" />
<!-- All in One SEO -->
※上記コードと、対応1で入力した<title>以外のコードが出力されます。

ですので、All In One SEOを404ページだけ、起動させないようにしたいのです!
補足:本記事作成に至った経緯
最初調べると以下参考サイトのように、<?php wp_head(); ?>と<?php wp_footer(); ?>を、<?php if (!is_404()) : ?>で挟むという記事しか見つかりませんでした。
ただこれをすると、functions.phpで読み込んだCSSの読み込みも除外するので困りました。
(wp_headの出力をそのまま貼り付けてみても、スクロール後のフェードインが動かなくなり、微妙に気になる不具合も生じました)
そのため、この挟む対応をしない方法を模索し、今回の404ページのみAll in one SEOの出力を除外するやり方に辿り着きました。
※参考:



ちなみに最初、<?php wp_footer(); ?>も挟む必要ある?と思い、<?php wp_footer(); ?>は挟みませんでしたが、その場合フッターの下にファイル名の羅列?みたいなのが表示され、やはり<?php wp_footer(); ?>は挟む必要があると悟りました。
ただし、ページ内に設定したスクロールしたらフェードインで表示される要素が、opacity:0;のままになり、この挟むやり方にも少し不安を感じました。