SWELLの関連記事ブロックで429エラーが出る原因と修正方法【完全解説】

SWELLの関連記事ブロックで429エラーが出る原因と修正方法

SWELLのブロックエディタで「関連記事」ブロックに自サイトのURLを貼り付けたとたん、429エラー(Too Many Requests)が表示されて困っていませんか?

このエラー、実は多くのSWELLユーザーが遭遇するトラブルです。

しかも「10回貼り付けると8回は出る、たまに出ない」という不安定な挙動が特徴で、
原因の特定が難しいと感じる方も多いでしょう。

結論から言うと、SWELLが自サイトのURLに対してHTTPリクエスト(wp_remote_get)を送ってしまい、サーバーのレート制限に引っかかることが原因です。

本記事では、技術的な背景を丁寧に解説した上で、
Get.phpを1か所修正するだけで完全に解決できる方法をご紹介します。

使い方から収益化までプロが教える
WordPressの教科書

「もう限界かもしれない…」
そんな思いで立ち止まっていませんか?

「収益が一向に増えず、事業を続ける意味に迷い始めている」
「クラウドソーシングや営業して稼げるか不安だ」
「収益化したいけれど、YouTubeや書籍では解決できなかった」
「WordPressでLP制作を頼まれるが、具体的な方法がわからない」
「広告を出稿したが、まったく成果が出なくて悩んでいる」
「仕事でグラフや資料制作を思うように作れない」
「独学の限界を感じ、でも何から学ぶべきかわからない」

これらの悩みを抱えているのは、
あなただけではありません。

多くのフリーランスや経営者が、
同じ壁にぶつかっています。

その壁を越えるための「本物の解決策」が、ここにあります。

私たちはこれまで、
数多くのフリーランスや経営者が収益化に成功するための
お手伝いをしてきました。

WordPressでホームページやブログを作るスキルだけでなく、
広告を最大限活用して集客し、
売上を上げるノウハウを惜しみなくお伝えします。

「成果が出る広告の作り方」
「売れるホームページを構築する秘訣」
「初心者でも成果を上げるための実践的なステップ」

これらを余すことなく提供するWordPressの教科書を、
今なら無料で受け取れます!

WordPressの教科書

\先着300名限定!特典付きで無料配布中/

今すぐ無料ダウンロードする

いまなら、先着300部限定で無料プレゼント付です。

今すぐ無料ダウンロードする

429エラーとは何か?SWELLで発生するケースを確認する

429エラー(Too Many Requests)とは、短時間に過剰なリクエストがサーバーに届いた際にサーバー側が「リクエストが多すぎます」と拒否するHTTPステータスコードです。

通常は外部からの過剰アクセスに対して発生しますが、SWELLの関連記事ブロックでは少し特殊な状況で発生します。

SWELLで429エラーが出る具体的な状況

このような状況で発生します
  • ブロックエディタで「関連記事(post-link)」ブロックを使用している
  • 自サイト(自分のWordPressサイト)のURLをブロックに貼り付ける
  • URLを貼り付けた直後にリアルタイムで429エラーが表示される
  • 外部サイトのURLでは発生しない
  • 毎回ではなく10回に8回程度の頻度で発生する

外部URLでは問題ないのに自サイトURLだけで発生する、という点がこのバグの大きな特徴です。これがヒントになります。

毎回ではなく「たまに出る」理由

10回に8回という不安定な発生頻度の理由は、
サーバーの負荷状況によってレート制限の閾値が変動するためです。

サーバーが空いているタイミングでは許容されることもありますが、負荷が高い時間帯や連続してリクエストが届いた場合に制限が発動します。そのため「たまに出る・たまに出ない」という挙動になります。

429エラーの根本原因:SWELLの自己リクエスト問題

このエラーの根本原因は、SWELLが関連記事ブロックで外部サイトと同じ処理を自サイトURLにも適用してしまっている点にあります。

SWELLの関連記事ブロックが行う処理の流れ

SWELLの関連記事ブロックにURLを貼り付けると、ブログカード(OGP情報を使ったリッチなリンク)を表示するために以下の処理が行われます。

  1. ブロックエディタがREST API経由でPHPを呼び出す
  2. get_external_blog_card() 関数が実行される
  3. Get_OGP_InWP::get() が呼ばれる
  4. wp_remote_get() で対象URLにHTTPリクエストを送信する
  5. 取得したOGP情報(タイトル・サムネイル・説明文)でブログカードを生成する

外部サイトのURLであれば、ステップ4で外部サーバーにリクエストが飛ぶため問題ありません。

しかし自サイトのURLを貼り付けると、自分自身のWordPressが自分自身にHTTPリクエストを送る「ループバックリクエスト」が発生します。これがサーバーのレート制限に引っかかって429エラーとなります。

is_wp_request()では防げない理由

SWELLのソースコードを確認すると、is_wp_request() という自己リクエスト回避処理がすでに実装されています。

しかしこの関数は「受け取るリクエストのUser-Agentを見るだけ」の処理であり、送信先が自サイトかどうかの判定はしていません。そのため、自サイトURLへのリクエスト送信を防ぐことができていません。

技術補足:ループバックリクエストとは

WordPressが自分自身のURLに対してHTTPリクエストを送ることを「ループバックリクエスト」と呼びます。cronの処理やプラグインの更新チェックなどで意図的に使われることもありますが、過剰に発生するとサーバー負荷の増大やレート制限の原因となります。

429エラーの修正方法:Get.phpを1か所修正する

修正方法は明快です。自サイトのURLが渡されたときは、外部リクエストを送らずに内部処理(WordPressのデータベース参照)で処理するよう振り分けるコードを1か所追加するだけです。

修正対象ファイルの場所

修正するファイル

SWELLテーマフォルダ内の以下のファイルを修正します。

classes/Utility/Get.php

修正内容:追加するコード

get_external_blog_card() 関数の冒頭(変数定義の前)に以下のコードを追加します。

/**
 * 外部サイトのブログカード
 */
public static function get_external_blog_card( $url, $card_args = [] ) {

    // 自サイトのURLが渡された場合は内部処理に転送(wp_remote_get による自己リクエストを回避)
    $home_url = untrailingslashit( home_url() );
    if ( 0 === strpos( rtrim( $url, '/' ), $home_url ) ) {
        $post_id = url_to_postid( $url );
        if ( $post_id ) {
            return self::get_internal_blog_card_v2( [
                'link_id'   => $post_id,
                'kind'      => 'post-type',
                'type'      => get_post_type( $post_id ) ?: 'post',
                'card_args' => $card_args,
            ] );
        }
    }

    $card_data = '';
    $cache_key = '';
    // ...(以下は既存のコードのまま)

修正コードの処理内容(解説)

追加したコードは以下の3ステップで動作します。

  1. URLが自サイトか判定する: home_url() と比較して、自サイトのURLかどうかを確認する
  2. 投稿IDを取得する: url_to_postid() でURLから投稿IDを取得する(データベース参照のみ、HTTP通信なし)
  3. 内部処理に転送する: get_internal_blog_card_v2() で処理することで wp_remote_get() を完全に回避する
この修正で期待できる効果
  • 自サイトURLを貼り付けても429エラーが発生しなくなる
  • 外部サイトURLのブログカードはこれまで通り正常に動作する
  • 内部URLの処理速度が上がる(HTTP通信が不要になるため)
  • サーバーへの無駄なループバックリクエストがなくなりサーバー負荷が下がる

修正後の動作確認:正常に動いているか確認する手順

Get.phpを修正してサーバーにアップロードしたら、以下の手順で動作確認を行ってください。

  1. WordPressの管理画面から任意の投稿を新規作成または編集画面を開く
  2. 「関連記事(post-link)」ブロックを挿入する
  3. 自サイトの記事URLをブロックに貼り付ける
  4. 429エラーが表示されずにブログカードが正常に表示されれば修正成功
  5. 外部サイトのURLも貼り付けて、こちらも正常に表示されることを確認する
注意:カテゴリー・タグページのURLについて

カテゴリーページやタグページのURL(例:https://example.com/category/wordpress/)は、url_to_postid() が投稿IDとして0を返すため、修正後も従来の外部処理(OGP取得)にフォールバックします。カテゴリー・タグページのURLで429が出る場合は別途対応が必要です。

SWELLアップデート後の注意点と対策

今回の修正はSWELLテーマのコアファイル(classes/Utility/Get.php)を直接編集するため、SWELLがアップデートされると修正が上書きされて元に戻る可能性があります

アップデート後に修正が消えた場合の対処法

  1. SWELLをアップデートした後、関連記事ブロックで再度429エラーが発生していないか確認する
  2. エラーが再発した場合は、本記事の修正内容を再度Get.phpに適用する
  3. 修正内容をテキストファイルで手元に保存しておくと作業が楽になる

根本的な解決策:子テーマでオーバーライドする方法

アップデートのたびに修正を再適用する手間を省きたい場合は、SWELLの子テーマでフック(フィルター)を使って処理をオーバーライドする方法が理想的です。ただし実装には深いSWELL知識が必要なため、今回はコアファイルの直接修正を推奨します。

SWELLの429エラー よくある質問

Q
外部URLでは429エラーが出ないのはなぜですか?
A

外部URLの場合はリクエストが外部サーバーに飛ぶため、自分のサーバーのレート制限には引っかかりません。429エラーが発生するのは、自サイトURLへのループバックリクエストが自分のサーバーのレート制限に達した場合のみです。

Q
SWELLのバージョンによって修正箇所は変わりますか?
A

SWELLのバージョンによってGet.phpの行番号や周辺コードが若干異なる場合があります。get_external_blog_card() 関数の先頭($card_data = '';の直前)に追加するという位置は共通です。関数名で検索して探してください。

Q
セキュリティプラグインを入れたら429エラーが増えた気がします。関係ありますか?
A

関係あります。WordfenceなどのセキュリティプラグインはWAF(Webアプリケーションファイアウォール)機能でループバックリクエストをより厳しく制限する場合があります。セキュリティプラグインを導入後に429エラーが増えた場合は、本記事の修正を適用することで解決できます。

Q
修正後にブログカードのデザインは変わりますか?
A

変わりません。修正後も内部URLのブログカードは正常に表示されます。ただし、表示方法が「OGP取得」から「WordPressの内部データ参照」に変わるため、アイキャッチ画像・記事タイトル・抜粋がWordPressのデータをもとに表示されます。これはより正確な情報が表示されるメリットもあります。

SWELLの429エラー 修正方法まとめ

SWELLの関連記事ブロックで429エラーが発生する原因と修正方法についてまとめました。

この記事のポイントまとめ
  • 原因はSWELLが自サイトURLに対して wp_remote_get() を実行するループバックリクエスト
  • 外部URLでは発生せず、自サイトURLのみで発生するのが特徴
  • 修正は classes/Utility/Get.phpget_external_blog_card() 関数冒頭に内部URL判定処理を追加するだけ
  • 修正後は自サイトURLで wp_remote_get() が発生しなくなり、429エラーが解消される
  • SWELLアップデート時に修正が上書きされる可能性があるため、修正内容を手元に保存しておくこと

今回の修正はファイル1か所・追加コード15行程度とシンプルですが、効果は確実です。WordPressのテーマカスタマイズに不安がある方や、修正後も別のエラーが出る場合は、お気軽にご相談ください。

WordPressのエラー・トラブルが自分で直せない時は

WordPressのトラブル、マルウェア感染・即解決。ワードプレスを復旧します。即日対応。全額返金保証で安心

ワードプレスのWordPressエラートラブル解決をしたいなら
クイックレスキューが解決します。

こんなお悩みはありませんか?

・WordPressが真っ白画面
・WordPressがログインできない
・ホームページのマルウェアや乗っ取り
・サイトの表示くずれ
・エラーが表示されている

これらでお悩みなら最短30分ですぐに解決します!

いまなら期間限定で

3つの安心

・万一改善されない場合は全額返金保証で安心!
30日間動作保証で安心!
初期費・調査料 0円で安心!

\無料調査・全額返金保証付き/

今すぐ無料で相談する

この記事を書いた人

よこやま良平

こんにちは!20年以上ITエンジニアとして活動してきた
よこやま良平です。

Wordpress復旧やサイト修復、オンライン講座では
200件以上のレビューを頂いており

「すぐに復旧してくれる!」
「当日行ってくれて助かった!」など

評価は4.9/5.0と非常に高く好評です。

またWordPress、SEO、Officeなど25冊以上の書籍を出版しており、
売上ランキング1位を連続で獲得致しました。

その他これまでに3000以上のサービス・システム・サイトを作成。

多くの方の「できない」や「悩み」を解決してきました。
その観点からわかりやすく解説しています。