web-dev-qa-db-ja.com

メニュー項目が消える

私はWP 3.5.1を実行しており、約100項目のメニューがあります。メニューに新しいアイテムを追加すると、古いアイテムは消えます。

私はSuhosinや似たようなものを走らせていません。原因は何ですか?

注:私は専用サーバーにいます。

6
Herr

同様の問題を抱えているユーザーには、以下のように動作します。

max_input_varsphp.ini変数の値を増やしてください。この変数はPHP version 5.3.9で導入され、デフォルト値は1000です。

詳しくはPHPのドキュメントをご覧ください。

http://php.net/manual/en/info.configuration.php

max_input_vars  1000    PHP_INI_PERDIR  Available since PHP 5.3.9.

許容される入力変数の数($ _GET、$ _POST、および$ _ COOKIEスーパーグローバルに別々に制限が適用されます)。このディレクティブの使用はハッシュ衝突を使用するサービス妨害攻撃の可能性を軽減します。

あなたはそれを1500または2000に増やすことを試みることができます。

見積もり

以下のデータを使用して、Save Menuボタンを押したときに、一定数のメニュー項目を指定して、送信しているPOST変数の数を見積もることができます。

save

のようです:

"number of POST variables" = 11 * "number of menu items" + 9

これは次の行と同等です。

y=11x+9

それでは、以下の表を構築することができます。

table

100メニュー項目を保存する必要がある場合、1109 POST変数を送信する必要があるので、max_input_varsは少なくとも1109でなければなりません。

同様に、メニューにアイテムを追加したとき(Ajax POST経由)

add

我々が得る

"number of POST variables" = 10 * "number of menu items" + 3

これは次の行です。

y=10x+3

対応するデータテーブルは次のとおりです。

table

10メニュー項目を追加するとき、103 POST変数を送ります。

データ:

$_POST項目だけでメニューを保存したときに、5データの量を表示するだけです。

Array
(
    [menu-name] => simple_menu
    [save_menu] => Save Menu
    [closedpostboxesnonce] => xxxxxxxxxx
    [meta-box-order-nonce] => xxxxxxxxxx
    [update-nav-menu-nonce] => xxxxxxxxxx
    [_wp_http_referer] => /dev/wp-admin/nav-menus.php
    [action] => update
    [menu] => 58
    [menu-item-title] => Array
        (
            [1135] => home
            [1131] => page1
            [1130] => page2
            [1132] => page3
            [1133] => page4
        )

    [menu-item-attr-title] => Array
        (
            [1135] => 
            [1131] => 
            [1130] => 
            [1132] => 
            [1133] => 
        )

    [menu-item-classes] => Array
        (
            [1135] => 
            [1131] => 
            [1130] => 
            [1132] => 
            [1133] => 
        )

    [menu-item-xfn] => Array
        (
            [1135] => 
            [1131] => 
            [1130] => 
            [1132] => 
            [1133] => 
        )

    [menu-item-description] => Array
        (
            [1135] => 
            [1131] => 
            [1130] => 
            [1132] => 
            [1133] => 
        )

    [menu-item-db-id] => Array
        (
            [1135] => 1135
            [1131] => 1131
            [1130] => 1130
            [1132] => 1132
            [1133] => 1133
        )

    [menu-item-object-id] => Array
        (
            [1135] => 477
            [1131] => 1020
            [1130] => 1028
            [1132] => 791
            [1133] => 603
        )

    [menu-item-object] => Array
        (
            [1135] => page
            [1131] => page
            [1130] => page
            [1132] => page
            [1133] => page
        )

    [menu-item-parent-id] => Array
        (
            [1135] => 0
            [1131] => 0
            [1130] => 1131
            [1132] => 1131
            [1133] => 0
        )

    [menu-item-position] => Array
        (
            [1135] => 1
            [1131] => 2
            [1130] => 3
            [1132] => 4
            [1133] => 5
        )

    [menu-item-type] => Array
        (
            [1135] => post_type
            [1131] => post_type
            [1130] => post_type
            [1132] => post_type
            [1133] => post_type
        )

    [menu-locations] => Array
        (
            [primary] => 0
        )

)

3項目をそれらのメニューに追加すると、POSTデータは次のようになります。

Array
(
    [action] => add-menu-item
    [menu] => 58
    [menu-settings-column-nonce] => xxxxxxxxxx
    [menu-item] => Array
        (
            [-56] => Array
                (
                    [menu-item-object-id] => 1728
                    [menu-item-db-id] => 0
                    [menu-item-object] => page
                    [menu-item-parent-id] => 0
                    [menu-item-type] => post_type
                    [menu-item-title] => Page 1
                    [menu-item-url] => http://example.com/page1/
                    [menu-item-target] => 
                    [menu-item-classes] => 
                    [menu-item-xfn] => 
                )

            [-57] => Array
                (
                    [menu-item-object-id] => 1724
                    [menu-item-db-id] => 0
                    [menu-item-object] => page
                    [menu-item-parent-id] => 0
                    [menu-item-type] => post_type
                    [menu-item-title] => Page 3
                    [menu-item-url] => http://example.com/page2/
                    [menu-item-target] => 
                    [menu-item-classes] => 
                    [menu-item-xfn] => 
                )

            [-59] => Array
                (
                    [menu-item-object-id] => 1658
                    [menu-item-db-id] => 0
                    [menu-item-object] => page
                    [menu-item-parent-id] => 0
                    [menu-item-type] => post_type
                    [menu-item-title] => Page 3
                    [menu-item-url] => http://example.com/page3/
                    [menu-item-target] => 
                    [menu-item-classes] => 
                    [menu-item-xfn] => 
                )

        )

)
16
birgire