本記事(記事カラム)には広告が含まれています。

WordPress をサブディレクトリに置いたら、サイトアイコンが表示されない問題に遭遇した話

人気ブログランキングテキスト
海上の大きな船
記事内に広告が含まれています。
人気ブログランキングテキスト

最近、自分のサイトで少し困ったことがありました。 「管理画面ではサイトアイコンが表示されるのに、公開ページでは表示されない」 という現象です。

ファビコン画像自体は生成されているのに、 HTML の <head><link rel="icon"> が出てきません。

最初はテーマの問題だと思っていたのですが、調べていくうちに WordPress の内部処理と、サブディレクトリ構成の“ズレ” が原因だとわかりました。

この記事では、 実際に自分が遭遇した状況・原因・対策 をまとめておきます。

同じ状況で悩んでいる方の参考になれば嬉しいです。

DMM FX広告(差し込みタイプ)
広告(PR)|自分の投資スタイルを見つける。※タップで開閉
広告(PR)

DMM FXは、「最初の一歩を踏み出す場」として選ばれることがある

口座を開いてみた。取引してみた。思ったよりも難しかった。──そんな経験が、投資との距離感を知るきっかけになることもあります。


サービスを通じて、自分の投資スタイルを見つける。それは、確信ではなくても構いません。「試してみた」という実感が、次の選択の材料になることもあるからです。


DMM FXに関する詳細は、以下の広告(PR)リンクをご覧いただけます。


👇こちらは広告(PR)リンクバナーです

DMMFX

人気ブログランキングテキスト

1. どんな環境で起きたのか

自分の WordPress は少し特殊な構成になっています。

  • WordPress 本体:/wp
  • 公開URL:https://example.com/
  • ルートに index.php を置いて /wp/wp-blog-header.php を読み込む
  • テーマ:Arkhe
  • Cocoon では問題なし

このように、 物理パスと公開URLが1段ズレている構成 です。

2. 実際に起きていた症状

  • 管理画面ではサイトアイコンが表示される
  • 公開ページでは表示されない
  • HTML に <link rel="icon"> が存在しない
  • uploads にはファビコン画像が生成されている
  • テーマの wp_head() は正常に動作している

つまり、 画像はあるのに、読み込みタグが出ていない状態 でした。

3. 原因:WordPress がファビコンの URL を推測できていなかった

WordPress はサイトアイコンを出力するとき、 内部で wp_upload_dir() を使って URL を推測します。

しかし、サブディレクトリ構成だと以下のようなズレが発生します。

  • 物理パス:/wp/wp-content/uploads/
  • 公開URL:/wp-content/uploads/

このズレを WordPress が正しく処理できず、 安全側に倒れて “タグを出力しない” という挙動になります。

Cocoon では問題が出なかったのは、 Cocoon が head をほとんど最適化せず、 WordPress の自動出力をそのまま流すためです。

一方、Arkhe は head を軽量化しているため、 WordPress が出力をスキップすると、そのままタグが消えてしまいます。

4. 自分が行った対策(最も確実だった方法)

結論としては、 子テーマの functions.php に wp_site_icon() を明示的に追加する これが一番確実でした。

/**
 * サイトアイコンを明示的に出力
 * サブディレクトリ構成では自動出力されない場合があるため
 */
add_action( 'wp_head', function() {
    if ( function_exists( 'wp_site_icon' ) ) {
        wp_site_icon();
    }
}, 1 );

これを追加することで、

  • WordPress が自動出力をスキップしても
  • 子テーマ側で強制的にタグを出力できる

という状態になり、 公開ページでも確実にファビコンが表示されるようになりました。

5. Cocoon では問題が出なかった理由

Cocoon は head をほとんどいじらず、 WordPress の自動出力をそのまま使っています。

そのため、多少のズレがあっても動作します。

Arkhe は head を最適化しているため、 WordPress が出力を止めると、そのままタグが消えてしまいます。

このテーマの設計思想の違いが、 今回の症状にそのまま表れていました。

6. まとめ(同じ状況の方へ)

結論
  • サブディレクトリ構成では、WordPress がファビコンURLを推測できず自動出力を止めることがあります
  • Arkhe は head を軽量化しているため、この影響を受けやすいです
  • Cocoon は寛容なので問題が出にくいです
  • 最も確実な解決方法は、 子テーマの functions.php に wp_site_icon() を追加すること

自分はこの方法で完全に解決しました。

同じような状況で困っている方の参考になれば幸いです。

人気ブログランキング ブログパーツ

もしも


人気ブログランキングバナー

人気ブログランキング

人気ブログランキングテキスト