「WordPress」タグアーカイブ

WordPressで「アクティブなPHPセッションを検出」エラー発生時の原因とmu-pluginでの解決方法

WordPress のサイトヘルス(Site Health)で、次のような警告が表示されて困ったことはありませんか?


🧩 発生した警告内容


アクティブな PHP セッションが検出されました
WordPress のパフォーマンスを改善するために、HTTP リクエスト前にセッションを閉じてください。」)


このエラーは、WordPressが内部通信(REST API/ループバックリクエスト)を行う際に、PHPのセッションファイルがロック状態のまま残っていることが原因です。


⚙️ なぜ発生するのか?

WordPress は「ブロックエディター」や「サイトヘルス診断」などで REST API を使って自分自身と通信しています。
ところが、あるプラグインやテーマが session_start() を呼び出すと、PHPがセッションファイルをロックしてしまい、並行リクエスト(REST API通信)が待たされてタイムアウトするケースが発生します。

主な原因

  • session_start() を使うプラグイン(例:ログイン拡張、OTP認証、Google Site Kit、アバター系など)

  • php.ini の設定で session.auto_start=1 になっている

  • テーマや独自コード内でのセッション開始忘れ

このような状態になると、WordPress のサイトヘルスで

「アクティブな PHP セッションを検出しました」
という警告が出るようになります。


💡 今回のケース

私の環境ではsession_start()を使用しているプラグインは以下のようになってました。

  • Google Site Kit(Google公式プラグイン)を使用

  • OTP(ワンタイムパスワード)やアバター系プラグインも動作中

  • どれもセッション開始を止められない

つまり「プラグインを停止せずに安全に解消したい」状況でした。


✅ 解決策:mu-pluginでセッションを早期終了する

プラグインを無効化できない場合は、REST APIやループバック通信が走る前にセッションを閉じるだけで十分改善します。
これをWordPressが自動で読み込む mu-plugin(必須プラグイン)として配置すればOKです。


🧭 手順

手順①:フォルダを確認/作成

wp-content/mu-plugins/ フォルダが存在しない場合は作成します。

手順②:ファイル作成

ファイル名:
wp-content/mu-plugins/close-session.php


💻 コード全文(コピペOK) 


 

🔍 動作確認

  1. ファイルをアップロード

  2. WordPress管理画面を再読み込み

  3. 「サイトヘルス → 再チェック」を実行

✅ 結果:「アクティブなPHPセッションを検出」警告が消え、REST APIテストも正常に完了しました。


🧠 補足:プラグイン停止で直る場合との違い

対処方法メリットデメリット
プラグイン停止根本解決必要な機能が使えなくなる
mu-plugin設置停止不要・安全セッション依存の書き込みが一部省略される可能性(軽微)

大半のケースでは session_write_close() によって問題なく動作します。
Google Site Kit や WP Super Cache との併用環境でも安定動作を確認済みです。


🧾 まとめ

項目内容
発生原因プラグインやテーマがPHPセッションをロックしたままにする
症状Site Healthに「アクティブなPHPセッション」警告、REST APIエラー(cURL 28)
対処法mu-pluginでREST/API実行前にセッションを閉じる
メリットプラグイン停止不要で安定化、タイムアウト防止
検証結果警告解消+パフォーマンス改善を確認

これで「アクティブなPHPセッション」警告とはサヨナラできます✨
もし同じようにGoogle Site Kitやログイン関連プラグインを使っていて警告が出る場合は、今回の mu-plugin対策 を導入してみてください。

WordPress サイトヘルスの「REST API でエラーが発生しました(cURL error 28)」の原因と対処方法

WordPress のサイトヘルス診断で、以下のようなエラーが表示されたことはありませんか?

REST API のテスト時にエラーが発生しました:
(http_request_failed) cURL error 28: Operation timed out after 10000 milliseconds with 0 bytes received

このエラーは、WordPress が「自分自身の REST API にアクセスしようとしたときにタイムアウトして失敗する」ことで発生します。本記事では、実際にこのエラーが発生し、テーマの functions.php にコードを追記するだけで解消できた方法をご紹介します。


✅ エラーの原因

WordPress はサイトヘルス診断で「自分のサイトの REST API (例: /wp-json/...) にアクセスできるか」をチェックしています。

しかし、以下のような環境だとここで10秒待っても応答がなく、タイムアウト (cURL error 28) になります。

想定される原因よくあるパターン
IPv6 経路が不安定サーバーが IPv6経由でアクセスしようとして詰まる
HTTP/2 と cURL の相性HTTP/2 のネゴシエーションで固まる
WAF/CDN が自己アクセスをブロックCloudflare Bot対策やWordfence等
タイムアウトが短すぎるデフォルト10秒のまま

✅ 今回の解決方法(functions.php に追記だけ)

以下のコードを テーマの functions.php の末尾に貼り付けて保存するだけでエラーが消えました。


 

✅ このコードがやっていること(ざっくり理解用)

対策内容効果
IPv4固定IPv6経由で固まる環境を回避
HTTP/1.1固定HTTP/2でハングする問題を回避
タイムアウト延長10秒 → 20秒で猶予確保
サイトヘルス検査URLのみ内部処理化ネットワークを経由せず、確実に成功させる

✅ 本質的な根本原因がある場合の追加チェック(必要な人向け)

要確認箇所状況
Cloudflare / WAF/wp-json/* への自己アクセスがブロックされていないか
Wordfence / AIOWPS自サイト内アクセスがBot扱いされていないか
サーバーのIPv6不要なら無効化で安定することも
HTTP/2サーバー設定ALPNの相性によってはHTTP/1.1優先化で安定

✅ 結論

✔ サイトヘルスの「cURL error 28」は、WordPressが自分のREST APIを叩いたときにタイムアウトすることが原因
✔ テーマの functions.php に対策コードを入れるだけで解消可能。
✔ 環境によっては WAF・IPv6・HTTP/2 側の調整が必要な場合もあり。


✅ 今後の運用アドバイス

✅ このコードは常時有効のままでOK(他のREST動作を妨げない)
✅ 必要なら後で /wp-json/ の自己アクセスが安定したら内部実行部分だけ削除可
✅ Cloudflare や WAF を使っている場合は、「自己アクセスをブロックしない」設定を追加するとさらに健全


「REST APIのエラーがずっと消えなくて困っている」という方は、まず本記事の方法を試してみてください。

AIで進化するセキュリティ:不正アクセス検知とログ解析の最新事例

WordPress は世界で最も利用されている CMS ですが、その分サイバー攻撃の標的になりやすいのも事実です。ブルートフォース攻撃やスパム、SQLインジェクションなど、日々新しい脅威が生まれています。こうした状況に対応するため、近年は AIを組み込んだセキュリティプラグイン が登場し、ログ解析や不正アクセス検知に活用されています。


AIがセキュリティで注目される理由

従来のセキュリティは「既知の攻撃パターン」をベースにしていました。しかし、攻撃者は常に新しい手口を編み出しています。

AIを導入することで、次のようなメリットが得られます。

  • ログの大量解析をリアルタイムで実行

  • 異常なアクセスパターンを検知しやすい

  • 未知の攻撃や兆候にも対応可能

  • 誤検知が減り、正規ユーザーを遮断しにくい


AIセキュリティプラグインの具体例

1. Wordfence Security

定番のセキュリティプラグイン。最新バージョンでは機械学習を取り入れた不正アクセス検知を搭載。ログ解析に基づいて攻撃パターンをスコアリングし、自動で遮断可能。

👉 実績データ
Wordfence の公式レポートによれば、2024年だけで 540億件以上の悪意あるリクエストをブロックし、550億件以上のパスワード攻撃を防いだと報告されています【Wordfence 2024 Annual Security Report】。
引用元: Wordfence公式ブログ


2. WP Cerber Security

ブルートフォース攻撃やスパム対策に強く、AIによる異常検知システムを搭載。ダッシュボードで「通常と異なるアクセス」を可視化できます。

👉 機能紹介

  • マルウェアスキャンと整合性チェックによって、WordPress コアやプラグイン・テーマの改ざんを検知

  • 定期スキャンとメール通知で、管理者に脅威を自動レポート

  • 実際のレビューでも、悪意あるアクセスがダッシュボードに検知・表示される事例が報告されています
    引用元: WP Cerber公式サイト, WP Mayorレビュー


3. 外部AI連携サービスを利用

プラグイン単体ではなく、サーバーログやアクセス履歴を 外部のAI解析サービス に送信して分析する方法です。例えば、

  • Cloudflare などのCDNサービスが提供する AIベースのWAF(Web Application Firewall)

  • SIEMツール+AI解析 を組み合わせた不正アクセス検知
    といった形で活用できます。WordPress自体に導入するというより、外部のAI防御システムと併用する方式です。


従来型 vs AI搭載プラグイン 比較

項目従来型セキュリティプラグインAI搭載セキュリティプラグイン
検知方法ルールベース(ブラックリスト、既知のシグネチャ)機械学習によるパターン分析・異常検知
攻撃対応既知の攻撃には強いが未知の攻撃に弱い未知の攻撃や新しいパターンも検出可能
誤検知正規アクセスを遮断するリスクありアクセスの挙動を学習し誤検知が少ない
管理負担管理者が手動でIP制限や設定変更自動でスコアリング・遮断、レポートも生成
可視化基本的なログ表示のみAIが要約レポートやダッシュボードで可視化
導入難易度プラグインを入れるだけプラグイン導入+AI設定(APIキーなど)

実際の導入効果(参照実績を踏まえた想定例)

Wordfence や WP Cerber の公開データからも明らかなように、AI対応プラグインは大量の攻撃を検知・遮断できる実績があります。

例えば中小企業サイトに導入した場合、次のような効果が期待できます。

  • 不正アクセスの 80〜90%以上を自動検知・遮断

  • 誤検知はほぼゼロで、正規ユーザーの利用を妨げにくい

  • 攻撃傾向をまとめた AIレポートを毎日確認可能

  • 管理者の負担が大幅に軽減される

従来の「IPブロック中心の対策」よりも、強力なセキュリティとユーザビリティの両立が実現可能です。


まとめ

WordPress に AI を導入するなら、まずは AI対応セキュリティプラグイン が現実的で効果的です。
Wordfence のように数十億件単位の攻撃を遮断している実績や、WP Cerber の高度なマルウェア検知機能を考えると、AIは「未知の脅威」への備えとして有効であることがわかります。

攻撃が巧妙化する中で、AIは「次世代のセキュリティ対策」として欠かせない存在になっていくでしょう。

小規模サイトでもできる!WordPressにChatGPTチャットボットを導入する手順

AI技術の進化により、Webサイトに「AIチャットボット」を設置するのは特別なことではなくなりました。特に WordPress × ChatGPT API を使えば、初心者でも比較的簡単に導入できます。

この記事では 小規模なブログや企業サイトでも実践可能な導入手順 を解説し、実装方法の比較・よくある質問(FAQ)もまとめます。


なぜWordPressにChatGPTチャットボットを導入するのか?

  • 24時間自動対応
    ユーザーの質問に即時回答でき、問い合わせ対応を効率化。

  • 運営者の負担軽減
    小規模サイトでも人的リソースを削減可能。

  • UX向上
    FAQページよりも自然な会話で理解しやすい。


導入手順(全体の流れ)

  1. OpenAI APIキーを取得

  2. WordPressに環境を準備(プラグイン or カスタムコード)

  3. APIと連携してチャット画面を設置

  4. デザインや回答をカスタマイズ


ステップ① OpenAI APIキーを取得

  1. OpenAI公式サイト にアクセス

  2. アカウント作成・ログイン

    • Googleアカウント / Microsoftアカウント / メールアドレス で登録可能

    • 既にChatGPT(chat.openai.com)を利用している場合は、そのアカウントでログイン可能です

     

  3. 「View API keys」から新しいキーを発行

👉 このキーが WordPressとChatGPTをつなぐ認証情報 になります。


ステップ② WordPressに環境を準備

WordPressでChatGPTを動かす方法は大きく分けて 「プラグイン導入」「カスタムコード実装」 の2種類があります。

プラグイン導入 vs カスタムコード 比較表

項目プラグイン導入カスタムコード実装備考
難易度★☆☆(初心者向け)★★★(中級者以上)まず動かすだけならプラグインが楽。細かな要件はコード向き。
メリットコード不要/設定が簡単/導入が早い自由度が高い/デザインを自由にカスタム/セキュリティ制御しやすい要件が固まっていない初期段階はプラグイン、後からコードに移行も可。
デメリットデザイン自由度が低い/更新依存PHP/JS知識が必要/実装工数がかかる保守コストはサイト規模と運営体制で変動。
コスト(初期/運用)無料〜有料プラグインあり/設定時間は短め開発時間がコストに直結/保守の手間ありいずれもAPI利用料は別途(従量課金)。
向いている人/用途まず試したい/技術に自信がない/短期で導入したいUI/挙動を細かく作り込みたい/拡張前提の中長期運用小規模はプラグインで検証→ニーズ確定後にコード化が無難。

ステップ③ APIと連携してチャット画面を設置

シンプルな例(JavaScript + Fetch API):


ステップ④ デザインや回答をカスタマイズ

  • CSSでUI調整(吹き出しデザインにすると親しみやすい)

  • 初期メッセージ設定(例:「こんにちは!ご質問があればどうぞ」)

  • 免責文を表示(不正確な回答の可能性に備える)


よくある質問(FAQ)

質問 回答
Q1. 無料で使えますか? 基本は有料です。APIは従量課金制ですが、小規模サイトなら月数百円〜で利用可能。
Q2. ChatGPT Plusを契約している場合も有料? はい、別料金です。 ChatGPT Plus(Web版の有料プラン)とAPI利用料は完全に分かれています。
Q3. プログラミング知識は必要? 必須ではありません。プラグイン導入で簡単に設置可能。カスタムコードなら自由度が増します。
Q4. セキュリティは大丈夫? APIキーを公開コードに直接書かないように注意。環境変数やPHP経由での呼び出し推奨。
Q5. スマホでも使える? 可能です。レスポンシブ対応のCSSを整えれば快適に利用できます。
Q6. どんな用途に向いてる? お問い合わせ対応、商品説明、FAQ代替、雑談的なやり取りなど。小規模サイトでも効果的です。

注意点と運用ポイント

  • API利用は従量課金 → 想定アクセス数を確認

  • トークン数制限 → 長文回答はコスト増に注意

  • 回答ログの定期確認 → 想定外の回答を調整


まとめ

小規模なブログや企業サイトでも、WordPress × ChatGPT API を使えば 低コストかつ短期間でAIチャットボットを導入可能 です。

  • OpenAI APIキーを取得

  • WordPressに環境を準備(プラグイン or カスタムコード)

  • チャットUIを設置

  • デザイン&回答を調整

ユーザー体験を高めつつ、運営負担を減らせる強力な仕組みです。今後のWebサイト運営にぜひ取り入れてみてください。

PHPアップデート後にWordPressが真っ白に?致命的エラーから復旧する方法

WordPressでサイトを運営していると、サーバー側でPHPのバージョンを更新した際に「致命的エラー(Fatal Error)」が発生し、サイトが真っ白になって表示されなくなることがあります。
これは古いテーマやプラグインが新しいPHPに対応していないことが主な原因です。

この記事では、PHP更新後にWordPressが表示されなくなったときの原因と復旧手順をわかりやすく解説します。


よくある原因

  • プラグインの非互換性
    古いプラグインがPHPの新しい構文に対応しておらず、エラーを引き起こす。

  • テーマのコードが古い
    独自テーマや更新が止まっているテーマが最新PHPで動作しない。

  • キャッシュや.htaccessの問題
    PHP切替直後にキャッシュが残っていたり、設定ファイルが古い記述を持っている場合。


復旧のためのステップ

1. エラーメッセージを確認する

  • サイトは真っ白でも、サーバーログ(error_log)やWordPressのデバッグモードで原因を確認できます。

  • wp-config.php に以下を追加するとエラー内容が記録されます。

  • この設定を有効にすると、wp-content/debug.log というファイルが自動的に作成され、エラー内容が追記されていきます。

  • サイト訪問者にエラーメッセージを見せずに、管理者だけがエラーを確認できるので安心です。

2. プラグインを停止する

  • FTPやファイルマネージャーで wp-content/plugins フォルダを開き、問題のプラグインを一時的にリネーム(例: simple-lightboxsimple-lightbox_old)。

  • これでサイトが表示されれば、そのプラグインが原因です。

3. テーマを切り替える

  • wp-content/themes 内の現在のテーマをリネームすると、自動的にWordPressのデフォルトテーマ(Twenty Twenty系など)が有効化されます。

  • これで表示されれば、使用中のテーマが原因です。

4. PHPバージョンを一時的に戻す

  • サーバーの管理画面からPHPを前のバージョンに戻せば、とりあえずサイトは表示されます。

  • その後、プラグインやテーマを更新して対応を進めましょう。

5. 最新バージョンへの対応

  • プラグイン・テーマの更新を行いましょう。開発が止まっている場合は代替のプラグインを探すのが現実的です。

  • サイト全体のバックアップを取り、再度PHPを新しいバージョンに切り替えます。


再発防止のポイント

  • PHP更新前にステージング環境やテスト環境で動作確認する。

  • 定期的にテーマ・プラグインを更新しておく。

  • 更新が止まっているプラグインはできるだけ使用しない。


まとめ

PHPアップデート後にWordPressが「真っ白」になった場合、慌てずに以下の流れで対応しましょう。

  1. エラーログやデバッグモードで原因を確認

  2. プラグインやテーマを無効化して切り分け

  3. 必要に応じてPHPを一時的に戻す

  4. プラグイン・テーマを更新して再度挑戦

この手順を踏めば、多くのケースで復旧が可能です。
「真っ白画面」は焦りますが、落ち着いて対応すれば必ず解決できます。

WordPressで記事の更新時に「更新が失敗しました。返答が正しいJSONレスポンスではありません。」と表示されたり新規投稿画面を開こうとしても「Security check failed」と表示された原因

本日WordPressで作業していたら以下のような事象が発生しました。

  • WordPressで記事を更新しようとしても以下のように「更新が失敗しました。返答が正しいJSONレスポンスではありません。」と表示されて更新出来ない
  • 新規で投稿や固定ページを追加しようとしても「Security check failed」と表示されて新規投稿用の画面が表示されない

先日まで投稿できてたのに何故!?

と思いエラーメッセージでググっても「クラシックエディタに変更してみる」とか「パーマリンク設定を基本にする」などは見つかりましたが今ひとつ根本的な解決手段じゃないなあと本日行った作業を思い出してみるとそういばプラグインいくつか更新したな。。と思い出し本日更新したプラグインを一つずつ無効化して確かめてたら。。

プラグイン「WP to Twitter」の更新が原因でした!!

これを無効化したら全て正常に動作したので私の場合は「プラグインの更新で不具合があった」というのが根本原因でした。。

やっぱりプラグイン更新時は動作確認必須だなあと再認識(^_^;)

WP to Twitterのページを見るとバージョン「3.6.0」に更新すると発生します。

サポートフォーラムを見てもまだこの件については何も記載されてないようなのでもう少し対応待つ必要ありそうです。

Wp to Twitterのプラグインページへ

 

今回は更新したプラグインで不具合があったのが原因でしたが、調べていると他の原因でも「更新が失敗しました。返答が正しいJSONレスポンスではありません。」のメッセージが表示されることがあるようです。まずは正常に更新出来ていた時期~エラーが発生した時期までに更新したことを思い出して一つずつ原因を潰すのが一番近道かなあと思います。あと定期的なバックアップも大事!

他に考えられる原因や対処方法

  • レンタルサーバー側でなんらかのセキュリティなどの機能が追加されたのが影響した
  • 「.htaccees」の編集で記載ミスがあった。もしくは自動で中身がクリアされてしまっていた。
  • ブラウザのキャッシュをクリアしたら直った
  • サーバーのWAFをOFFにしたら直った

 

WordPressで「現在メンテナンス中のため、しばらくの間ご利用いただけません」と表示される原因について

WordPressを操作していてサイトを表示するといきなり「現在メンテナンス中のため、しばらくの間ご利用いただけません」と表示されて管理画面も表示出来ずかなり焦ったので対処方法をメモしておきます。

事象

    WordPressで作成したサイトを表示すると「現在メンテナンス中のため、しばらくの間ご利用いただけません」と表示される

原因

    プラグイン等の更新中にF5などで再表示した場合に発生するようです

対応策

  • 該当サイトのリポジトリへアクセスし、「.maintenance」ファイルを削除します。

WordPressでjQueryが動かない

当初WordPressを使用し始めていた時期に、jQueryを動作させようとしたら全く反応しないという事象が発生しました。その時の対処方法をメモしておきます。

原因

WordPressではjQuery以外にも「prototype.js」や「mootools」といった他のライブラリも読み込まれています。これらのライブラリでも「$」関数が使用されている為、conflictが発生してjQueryが動作しなくなってしまいます。

対処方法

jQueryで以下の様に「$」を「jQuery」へ書き換えて「$」関数を使用しないように変更します。

変更前

変更後

WordPressのバージョンアップ後に「Warning: Missing argument 2 for wpdb::prepare()」が発生

最近WordPressのバージョンアップを3.8へアップデートしてサイトを表示してみたら、プラグインを使用している箇所で「Warning: Missing argument 2 for wpdb::prepare()」というワーニングメッセージが表示されていました。どうもこの事象は3.5へアップデートした時から発生している事象のようで、当方は3.4→3.8へのバージョンアップだったので今頃遭遇しました・・・。
放置しても動作はしますが、見栄えが悪いので対処方法を調べてみました。

原因

WordPressの3.5以上では「wp-db.php」で定義されているFunction「prepare」の引数の数が2つ必要になっています。
[php]function prepare( $query, $args ) {[/php]
今回Warningが発生した原因はこの「prepare」をプラグインのphpから呼び出す際に引数が1つしか指定されていない為にWarningが表示されたみたいです。

対処方法

原因は明確なので、function「prepare」を使用しているphpを修正します。function「prepare」を使用している箇所へダミー引数となる「null」を2つ目の引数として指定すれば対応完了です。(もちろんプラグインが正式対応したらバージョンアップしましょう)

変更前

[php]$wpdb->get_row($wpdb->prepare($sql));[/php]

変更後

[php]$wpdb->get_row($wpdb->prepare($sql, null));[/php]

WordPressでショートコードをそのまま表示する方法

プラグインの紹介ページを作成していたらふと困ったことが発生。
[ショートコード]を文字列としてそのまま表示させようとしたら正常に機能してしまって、文字列として表示されない!?
それで、色々と試した結果・・・

[[ショートコード]]

と[]を連続して入力すればそのまま表示されることが判明しました。(ちょっと焦りました–)
今後もちょくちょく使用すると思われるので、プラグインを使用するといった面倒さがないのは助かりますね。