問題描述

我正在執行 WP 3.5.1,我有一個包含大約 100 個專案的選單。當我向選單中新增新專案時,舊的消失。

我沒有執行 Suhosin 或類似的東西。可能是什麼原因?

注意:我在專門的伺服器上。

最佳解決方案

以下是為一些類似問題的使用者工作的:

嘗試增加 php.inimax_input_vars 變數的值。該變數在 PHP 版本 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.

How many input variables may be accepted (limit is applied to $_GET, $_POST and $_COOKIE superglobal separately). Use of this directive mitigates the possibility of denial of service attacks which use hash collisions.

您可以嘗試將其增加到 15002000

估計:

使用下面的資料,當我們按 Save Menu 按鈕時,給定一定數量的選單項,我們可以嘗試估計我們傳送多少個 POST 變數

好像是:

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

這相當於行:

y=11x+9

那麼我們可以建立下表:

在您的情況下,我們看到如果您需要儲存 100 選單項,則需要傳送 1109 POST 變數,因此您的 max_input_vars 必須至少為 1109

類似地,當我們向選單中新增專案 (透過 Ajax POST)

我們得到

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

這是行:

y=10x+3

相應的資料表是:

當我們新增 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] => 
                )

        )

)

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。