最も必要とされている時に、信頼できるWordPressチュートリアルを。
WordPress入門ガイド
WPBカップ
3000万以上
当社のプラグインを使用しているウェブサイト
20+
WordPress経験年数
3000+
専門家によるWordPressチュートリアル

WordPressでカスタムメニュー項目の制限を修正する方法

WordPressメニューに多くの項目を追加したのに、一部が保存されなかったり、さらに悪いことに完全に消えてしまったりする場合、サーバーのmax_input_vars制限に達している可能性が高いです。この設定は、PHPが1回の要求で受け入れることができる入力フィールドの数を制限しており、メニュー項目はすぐにその制限を超えてしまう可能性があります。

WordPressはバージョン4.5.3で根本的なバグを修正しました。この問題がまだ発生している場合は、通常、テーマ、プラグイン、またはページビルダーがサーバーの制限を超えていることが原因です。

この記事では、WordPressでカスタムメニュー項目数に上限がある問題を修正する方法を説明します。

WordPressでカスタムメニュー項目の制限を修正する方法

メニュー項目数制限の原因

WordPress のカスタムメニュー項目の制限は、通常、サーバーの PHP max_input_vars 設定によって引き起こされます。この設定は、WordPress メニューを保存する際に PHP が受け入れられるフォームフィールドの数を制御します。ほとんどのサーバーでは、デフォルトで 1,000 に設定されています。

各メニュー項目は、ラベル、URL、ターゲット、CSS クラスなど、複数のフォームフィールドを使用します。メニューが大きくなるにつれて、フィールドの総数がこの制限を超える可能性があります。そうなると、PHP はメニューを保存する際に一部のフィールドの処理を停止する可能性があり、一部の項目が消えてしまう原因となります。

今日でもこのエラーが表示される場合は、テーマ、ページビルダー、またはプラグインがメニューフォームに余分なフィールドを追加しているか、メニューの保存方法を変更している可能性があります。「PHP max input vars は少なくとも 5000 である必要があります」のようなメッセージが表示されることがあります。

一部のメニュー項目が消えてしまった場合は、すぐにメニューを再保存しないでください。そうすると、消えた項目でメニューが上書きされる可能性があります。まず入力変数の制限を修正してから、メニューに戻って消えた項目を復元してください。

それを踏まえて、WordPress のカスタムメニュー項目の制限を修正する方法を説明します。この記事でカバーする内容は以下のとおりです。

ステップ1:WordPressを更新し、現在の制限を確認する

まず、WordPress が最新バージョンを実行していることを確認してください。これだけで、このバグの従来のバージョンは解決します。

ダッシュボード » 更新 に移動し、保留中のコアアップデートをインストールしてください。

WordPress管理ダッシュボードの更新画面

次に、サーバーの max_input_vars が現在どのように設定されているかを確認します。

ツール » サイトヘルス » 情報 に移動し、「サーバー」セクションを開きます。max_input_vars が現在の値とともに一覧表示されているのがわかります。

サイトヘルス のサーバー情報で max_input_vars を確認する

1,000 未満の場合、またはテーマやプラグインが特に高い数値を要求している場合は、以下のいずれかの方法で増やす必要があります。

方法1:ホスティングパネルで制限を引き上げる

多くの WordPress ホストでは、ファイルを一切変更せずに PHP 設定を変更できます。cPanel を使用しているホストでは、MultiPHP INI エディターを通じてこれを行います。

まず、cPanel にログインし、ソフトウェア » MultiPHP INI エディター に移動します。

cPanel 内の MultiPHP INI エディターにアクセスする

次に、ドロップダウンからドメインを選択し、「max_input_vars」を見つけて「5000」に設定します。「適用」をクリックします。

cPanel 内で max_input_vars を設定する

ホストが cPanel を使用していない場合は、ホスティングダッシュボードで「PHP 設定」または「PHP 設定」画面を探してください。ほとんどのマネージド WordPress ホストは、同様のものを提供しています。

方法2:.user.iniまたはphp.iniファイルを編集する

💡 重要: .user.ini または php.ini を編集すると、ウェブサイト全体に影響を与える可能性があります。変更を加える前に、WordPress の完全なバックアップを作成することをお勧めします。

ホスティングプロバイダーが PHP 設定パネルを提供していない場合は、PHP 設定ファイルを編集することで max_input_vars の制限を増やすことができます。

ほとんどの共有ホストは .user.ini ファイルを使用しており、通常は WordPress のルートフォルダにあります。一部のサーバー設定では、代わりに php.ini を使用します。

ホスティングファイルマネージャーまたは FTP クライアントで適切なファイルを開き、以下を追加します:

max_input_vars = 5000

必要に応じてファイルを保存し、同じ場所にアップロードし直してください。.user.ini の変更が反映されるまで通常数分かかることに注意してください。

max_input_vars の php.ini を編集する

どのファイルを編集すればよいか、またはどこにあるかわかりませんか?ホストごとの手順については、WordPressでphp.iniはどこにあるかに関するガイドをご覧ください。

方法3:.htaccessファイルを編集する

💡 重要: .htaccess の構文エラーは、サイト全体を 500 Internal Server Error でオフラインにする可能性があります。このファイルを編集する前に、サイトのバックアップを取ってください。

サイトが Apache サーバーで実行されている場合、.htaccess ファイルを通じて max_input_vars の制限を増やすこともできます。このサーバー設定ファイルは通常、WordPress のルートディレクトリにあります。

ホスティングファイルマネージャーまたは FTP クライアントで .htaccess ファイルを開き、以下を追加します。

php_value max_input_vars 5000
max_input_vars の .htaccess を編集する

ファイルを保存し、WordPress メニューを再度確認してください。

この方法は Apache のみで利用可能であることに注意してください。保存後にサイトがダウンした場合は、追加した行を削除し、代わりに他の方法を試してください。

.htaccess ファイルが表示されない場合は、.htaccess ファイルの見つけ方に関する完全なガイドをご覧ください。

方法4:ホスティングプロバイダーに問い合わせる

上記にアクセスできない場合は、ほとんどのホストがこの変更を代行してくれます。このメッセージをコピーしてサポートチームに送信できます。

こんにちは、現在の制限により WordPress メニューの保存に問題が発生しているため、私のサイトの max_input_vars PHP 設定を 5000 に引き上げてもらえますか?よろしくお願いします!

PHP 設定をより直接的に制御できるホストを探している場合は、最高の WordPress ホスティングに関するガイドをご覧ください。

修正を確認する

max_input_vars の制限を増やしたら、メニューを再構築する前に新しい値が有効になっていることを確認するのが良いでしょう。

単に ツール » サイトヘルス » 情報 » サーバー に戻り、max_input_vars が 5000(または新しい値)を表示していることを確認してください。

サイトヘルス のサーバー情報で max_input_vars が増加した

その後、外観 » メニュー に移動し、不足している項目を再構築して保存できます。これで、何も失われることなく、完全なメニューが保存されるはずです。

それでも保存されない?その他の確認事項

  • プラグインを 1 つずつ非アクティブ化し、それぞれ保存し直して、競合しているプラグインを見つけてください。
  • ブロックテーマを使用している場合、サイトエディターのナビゲーションブロックはメニューデータを異なる方法で保存し、この制限の影響をまったく受けないことに注意してください。
  • 非常に大きなメニュー(100項目以上)を管理していますか?WordPress でナビゲーションメニューを追加する方法とメガメニューチュートリアルに関するガイドでは、より大きなメニュー向けに構築されたアプローチを説明しています。

このガイドが WordPress のカスタムメニュー項目の制限を修正するのに役立ったことを願っています。次に、WordPress エラーのトラブルシューティングまたはWordPress パフォーマンスの向上に関するガイドを確認することをお勧めします。

開示: 当社のコンテンツは読者によってサポートされています。これは、一部のリンクをクリックすると、手数料が発生する可能性があることを意味します。WPBeginnerがどのように資金調達されているか、なぜそれが重要なのか、そしてどのように私たちをサポートできるかを確認してください。こちらが当社の編集プロセスです。

究極のWordPressツールキット

無料のツールキットにアクセスしましょう - すべてのプロフェッショナルが持つべきWordPress関連の製品とリソースのコレクションです!

読者とのインタラクション

80件のコメント返信する

  1. こんにちは!共有ホスティングを利用しています。そのため、php.iniファイルを編集するためのrootアクセスがありません。どうすれば問題を解決できますか?

  2. こんにちは

    外観 -> メニュー -> クリック -> リダイレクト先 -> 404ページ

    ウェブサイトにいくつかのメインメニューとカテゴリを追加しました。しばらくすると、メニューを開いて何かを変更したり削除したりできなくなりました。ウェブサイトが404ページにリダイレクトされます。多くのコードを試しましたが、何も機能しません。助けてください。

  3. 私も同じ問題に遭遇しました…しかし、私はローカルホストで作業しており、助けを求める相手がいません!(Windows 10/XAMPP/WP4.8)。WP初心者で、php.iniがどこにあるかもわかりません!私の「簡単な解決策」は、重要度の低いサブメニュー項目をいくつか削除することでした。しかし、それらをすべて元に戻したいのです。上記のメモリバンプを確認しましたが、古いものです。WP4.8では機能しないかもしれません!リスクを冒す価値はありません!

  4. こんにちは。

    素晴らしい情報ありがとうございます。Webrootに以下の情報を持つph5.iniファイルを作成することで、GoDaddyホスティングの問題を最終的に解決しました。

    memory_limit = 256M;
    max_execution_time = 300;
    max_input_vars = 3000;

    カスタマーサービスによるデータベースのリセット後に問題が解決しました。これは私にはできませんでした。お役に立てば幸いです。

  5. こんにちは、ありがとうございます

    この問題を抱えていました。メニューが長かったのですが、ある日50行に減ってしまいました。テーマサポートがこのトピックに送ってきました。すべてのオプションを試しましたが、ホスティングサポートに連絡しなくても、私には1つしか機能しませんでした。

    「#end of wordpress」行の前に、「php_value max_input_vars 5000」(引用符なし)を.htaccessファイルに追加したところ、問題が解決しました。

  6. こんにちは、チーム

    HostgatorのマルチドメインSSLを使用しています。

    設定を確認しましたが、どこでどのように行えばよいかわかりません。

    php.ini ファイルに max_input_vars=9000; というコードを追加しましたが、メインメニューにメニュー項目を追加できません。

    誰か助けてください。大変感謝します。

    敬具、
    -Rams

  7. 今まさにこの問題に直面しています。ホストに連絡したところ、共有サーバーのため 5000 変数まで増やすことはできない/しないと言われました。他に解決策はありますか?同じページに 2 つのナビゲーションメニューを設置することは可能ですか?それで問題が解決するでしょうか、それとも単に続くのでしょうか?

    事前に感謝いたします。どのようなご協力でも大変ありがたく思います。

  8. 素晴らしい。私も長い間、原因不明で同じ問題を抱えていました。多くの人に尋ねました。今日、ようやく問題を解決しました。ホスティングゲイターのコールセンターの担当者に電話する必要はありません。自分でできます。本当に助かりました。感謝の言葉もありません。

  9. Mahalo nui loa (どうもありがとう)!

    これはBluehostの共有ホスティングにあるクライアントのサイトで機能しました:
    1. Cpanel > ファイルマネージャー
    2. public_html > wp-admin
    3. 「新規ファイル」をクリック > php.ini と名前を付ける(このファイルがまだない場合)
    4. php.ini をクリック > 「編集」をクリック > もう一度「編集」をクリック
    5. 次を貼り付け:max_input_vars=5000; > 保存 > 完了

    • 私の場合はこれでうまくいきました!あなたは私の天使です!素晴らしい共有です。この問題に2日間悩まされていました。本当にありがとうございます!

    • Reneeさん、これは私のクライアントにも機能しました。ありがとうございます!彼らはHostGatorでホスティングしています。

      • 試しました、

        .htaccess ファイル内:
        php_value max_input_vars 5000

        php.ini ファイルで:
        max_input_vars=5000;
        upload_max_filesize = 70M;
        post_max_size = 128M;
        upload_tmp_dir = 70M;
        max_input_vars = 3000;
        memory_limit = 256M;

        .user.ini ファイル内:
        max_input_vars=3000;

        また、php.ini と .user.ini を wp-admin の内外に配置してテストしましたが、何も効果がありませんでした。

        .htaccessに追記したところ、wp-adminページが真っ白(空白)になってしまいます。
        私のホスティングは

        どんな助けでも感謝します。TIA

  10. GoDaddyを使用していますが、php.iniの修正は全く効果がありませんでした。Godaddyは、そのページやコードを有効なものとして認識すらしていません。

    Godaddyの担当者からサポートを受けて、回避策を提供してもらいました。

    HTML フォルダに .user.ini (ドット・ユーザー・ドット・イニ) という名前のページを作成しました。そのページに次のコードを追加しました。

    max_input_vars = 3000

    今のところうまくいっているようです。

    • htmlフォルダに.user.ini(ドットユーザー・ドット・ini)というページを作成しました -> PUBLIC_HTMLフォルダにファイルを作成したということですか?

      godaddyサーバーでも同じ問題が発生しているので、確認をお願いします。
      そして、1週間も連絡が取れていません。

      なぜGoDaddyに連絡するのがこんなに難しいのか分かりません。

      • Akut ゴーダディも使っています。

        php.iniファイルは、php.admin内ではなく、ファイルマネージャーのpublic_htmlフォルダ内に見つかりました。php.iniファイルを作成する必要もありませんでした。

        GoDaddyはWPの問題だと考えているようで、その特定の件でたらい回しにされました。

        ファイルサイズの上限を増やすように指示されました。(同じ修正ではありません)。

    • このソリューションは、1and1ホスティングプラットフォームで機能した唯一のものでした:

      HTML フォルダに .user.ini (ドット・ユーザー・ドット・イニ) という名前のページを作成しました。そのページに次のコードを追加しました。

      max_input_vars = 3000

    • Louさん、最初の確認(そして最初のテスト)で完璧に機能したようです。ありがとうございます!

      他に問題が発生した場合は更新します。

  11. WordPressサイトにサブメニューを追加する際に問題が発生し、カスタムリンクに変換されてしまいます。
    このエラーを解決するのを手伝ってください。

  12. Ubuntu VPSでは、以下のようにコメントアウトを解除して値を高く設定することで修正できました。

    max_input_nesting_levels = 500
    max_input_vars = 5000

    とにかく、解決策への道を示してくれたので感謝しています

    • 愛してるよ、君!
      君のこの解決策は、私の別の問題も解決してくれた!その問題は

      「メニューを「メニュー編集」タブで保存した後、「メニュー設定 -> テーマの場所」のチェックが保持されず、「場所の管理」タブでメニューの場所が削除されてしまいました。」

    • やあ、
      WordPressのマルチサイトを実行していて、サイトにカスタムフィールドを追加するのに問題があります。何も試しましたがうまくいかず、max_input_nesting_levels = 500を増やすというあなたの回答を見ました。VPSのUbuntu 16.04でPHP.Iniファイルでこの値を増やそうとしましたが、うまくいきませんでした。info.phpにはまだmax_input_nesting_levels = 64と表示されています。この値をどのように増やしたのか、PHP.iniファイル経由なのか、それともhtaccessファイル経由なのか教えていただけると幸いです。

      よろしくお願いいたします。

  13. HostGatorの皆様 – 同じ問題 & これで解決しました:

    1. Cpanel > ファイルマネージャー

    2. public_html > wp-admin

    4. 「新規ファイル」をクリックし、php.ini という名前を付けます(このファイルがまだない場合)。

    4. php.ini をクリック > 「編集」をクリック > 再度「編集」をクリック

    5. ペースト: max_input_vars=5000; > 保存 > 完了

    • こんにちは、

      私のサイトはgodaddyでホストされています。wp-adminにphp.iniを作成し、max_input_vars=5000;という一行を貼り付けました。

      メニューをさらに追加できませんでした。

    • ご提案ありがとうございます。あなたの提案に従って max_input_vars=5000; を含む php.ini ファイルを追加したところ、問題が解決しました。改めて感謝します。

    • 1 – テキストファイルを作成します
      2 – 次を貼り付けます:” max_input_vars=5000; ”(引用符なし)
      3 – php.ini として保存します
      4 – public_html > wp-admin にFTPで接続します

      完璧です
      ありがとうございました!!!

    • 私のウェブサイトでも同じ問題が発生しています

      私のサイトはHostGatorでホストされています。php.iniファイルを/wp-adminに追加しましたが、私には機能しません。助けてください。

  14. 私もこの問題を抱えています。Studio Pressの技術者にこのサイトを勧められました。Host Gatorの共有ホスティングアカウントを持っています。3000や5000では何も進まなかったので、max_input_varsを7000に引き上げてもらいました。お勧めのphp.iniをwp-adminに作成しました。それでもうまくいきません。wp-adminに作成したので、publicフォルダのphp.iniを削除する必要はありますか?解決するために一生懸命頑張っています。ありがとうございます。

  15. 共有ホスティングなので、php.ini をルートフォルダに置いても効果がありませんでした。しかし、wp-admin フォルダに置くと効果がありました。これは、nav-menus.php ファイルが wp-admin フォルダ内にあるためだと思います。

  16. 皆さん、…はい、私もこのメニューの問題/不具合に遭遇しました…そして、それはひどいものでした!!! 50ページから100ページの間で、メニューに追加した最後の項目が削除されたり、メインメニューのナビゲーションから落ちたりしていました!何だって?!!!

    初心者も玄人も、この(問題)について知っています…これは私のケースについてのみ話していますが、同じ悪夢を経験した誰かの役に立つことを願っています…さあ、始めましょう。

    HostGator の「共有ホスティング」では、「suhosin」はありません。これは、HostGator の担当者によると、PHP のスクリプトエラーに対するパッチ/プログラムであり、「サーバー」を保護するために設計されているとのことです。…この詳細にもかかわらず、続けます…私のケースで重要だったのは、…最終的に HostGator の担当者、3人目の担当者に、私の問題に関するくだくだしい説明を通して理解してもらえたのは、「max_input_vars = 3000」の部分でした。

    私のHostGatorの担当者が保留にし、問題を調査した結果、「max_input_vars = 3000」をphp.iniファイルに入れる必要があると判断しました。これは、HostGatorのみがアクセスできるファイルであり、私たちがHostGatorや他のホスティングプロバイダーのアカウントを通じて、よくアクセスポイントと呼ぶCPanelを使用してアクセスできる「ホーム」または「ルート」ディレクトリにあるphp.iniファイルではありません。

    このphp.iniファイルは、私やアカウント保有者である私たちが、ホスティングアカウントへのアクセス権を持っていても、インターネット経由でアクセスできるようなものでは全くありません。わかったか? よろしい、そして知っておくと良いことだ。

    さて、私がやったことは、この投稿のすぐ下のアレックスが言っていたことを実行し、これらのテキスト/コード行をphp.iniファイルに入れ、それを私のドメインで作業していたドメインの「wp-admin」フォルダ内のpublic_htmlファイル領域に置きました。しばらくの間、この「修正」が機能していると思っていましたが、今日、さらにページを追加していたところ、「なんてこった」という感じで、メインメニューのナビゲーション項目がラインから落ちてしまいました。まったく!

    問題に再び戻り、この投稿全体と、少し私の手に余る「Coretrac Ticket」のスレッドを再確認しましたが、それでも私は勤勉で決意を持っていました。そして、HostGatorの人々と再び話し合い#2を行い、その電話を終え、3人目の人でうまくいきました。

    最後に学んだことは、「max_input_vars = 3000」というのは、あなたのインストール/ドメイン/WordPressが持つことができるページ数に関係しており、「3000」はページ数を意味するということです。私のHostGator担当者は5000ページを設定しました。

    そのため、彼が電話中にその場で2つの新しいテストページを追加したところ、「やった!」と報告されました。やった!私もこれで好きなだけページを追加できるようになるはずです!あなたもWordPressの楽しさを体験できますように!

    よろしくお願いいたします。
    ガジェット

    • HostGatorの共有ホスティングアカウントで、wp-adminフォルダ内のphp.iniファイルに以下の行を追加することで問題が解決しました。

      max_input_vars = 9000;

      ありがとう

  17. php.ini ファイルを作成しますが、ルート(public_html)ではなく、「wp-admin」フォルダ内に作成し、以下を追加してください:

    max_input_vars = 3000;

    また、以下も設定しています:
    upload_max_filesize = 70M;
    post_max_size = 128M;
    upload_tmp_dir = 70M;
    max_input_vars = 3000;
    memory_limit = 256M;

  18. この素晴らしいヒントをありがとうございます!UberMenuで同じ問題を抱えていました。今、.htaccessファイルにphp_value max_input_vars 5000を追加したところ、問題が解決しました。

  19. いくつかのことを試しましたが、うまくいきませんでした。ホストにこれらの PHP 設定変更を行ってもらいました。また、他の人が提案したように Memory Bump プラグインを有効にしてから削除しました。

    私のテーマ(Twenty Ten)はメニューを1つしかサポートしていません。別のメニューを作成し、そこで問題なく変更を加えることができます。ライブサイトがあるので、実験できる量には限りがあります。

    他に何かアイデアはありますか?この際、何でも試します。

  20. マットの提案は私も効果がありました。なぜなら、私は suhosin を実行していないからです。

    php.ini ファイルに max_input_vars = 5000 を追加しました

  21. 同じ問題を抱えており、Memory Bumpプラグインでも解決しませんでした。

    ホスティングプロバイダーに連絡したところ、php.ini ファイルはまだなく、自分で作成するか、WP に作成してもらう必要があると言われました……

    どうすればこれを実行できますか?

  22. WPのajax機能がリスト内のアイテム数を評価し、1つの大きなリクエストではなく複数の連続したリクエストに分割することで、簡単な修正になるようです。

    WordPressチームがこれを事前に考えていなかったのは奇妙ですが、プラットフォームが非常に堅牢であるため、彼らには手が回らないのでしょう。自分でやるかもしれませんが、もちろん将来のアップデートで上書きされないようにする必要があります。なんて面倒なんだ!

  23. Mat Lipeさんと同じ状況です。私のサーバーにはsuhosinがインストールされていないため、問題が発生していました。Matさんが投稿したディレクティブをphp.iniファイルに追加することで問題を解決できました。ありがとうございます。

  24. 同じ問題に直面しましたが、ホスティングサポートと何日もメールでやり取りした後、ついに解決しました!

    彼らは以下の変更を行いました:

    php.ini に max_input_vars = 5000 を追加しました

    これで、まるで魔法のように機能し、好きなだけページを追加できるようになりました。

  25. こんにちは、

    私のサーバーはsuhosinを実行していないため、php.iniファイルにこれを追加してサーバーを再起動することでこの問題を解決できました。

    max_input_vars = 5000

    同じ問題を抱えている他の誰かの助けになれば幸いです

  26. これ、ありがとうございます。

    かなり前にこれを経験し、メモリ割り当てに関連していると思っていました。

    WordPressdotorg の Memory Bump Plugin ( http://wordpress.org/extend/plugins/memory-bump/ ) を有効にした後、最終的にメニューをさらに追加できるようになりました。

    その後、プラグインを無効化しました。

    コードをいじることなく、迅速かつ簡単でした。

返信する

コメントいただきありがとうございます。すべてのコメントは、コメントポリシーに従ってモデレーションされ、メールアドレスは公開されません。名前フィールドにキーワードを使用しないでください。個人的で意味のある会話をしましょう。