Gibt es Gründe, warum Sie keine Zeichenfolgen für Admin-Menüpositionen verwenden können?

7

Bei der Interaktion mit dem Admin-Menü, beispielsweise über add_menu_page, gibt es einen $positionParameter. Die Inline-Dokumente geben an, dass dies eine Ganzzahl sein sollte. Der Codex stimmt zu, fügt jedoch einen Hinweis hinzu, dass Sie einen Float verwenden können, wenn Sie ihn zu einem String machen (z '63.3'. B. ). In wp-admin / includes / menu.php wird das Array durch Vergleichen der Schlüssel mit sortiert strnatcasecmp.

In diesem Sinne könnte man eine Menüposition festlegen '63-foo'oder '63-bar'Positionskonflikte vermeiden. Dies ist besonders hilfreich für Plugins, bei denen derzeit eine Position festgelegt wird, die zu Konflikten in einigen Themen oder mit anderen Plugins führen kann.

Die Verwendung von Zeichenfolgen scheint einwandfrei zu funktionieren. Ich habe die Quelle gekämmt und keine Probleme gefunden, aber vielleicht habe ich etwas verpasst. Gibt es Gründe, warum eine Zeichenfolge nicht für die Menüposition verwendet werden kann oder sollte?

Matthew Boynes
quelle
Ist das 63-foowirklich besser als 63? Der niedrigere Alpha-Plugin-Name würde (wenn das die Zeichenfolge wäre) nur zuerst geladen, was sich wirklich nicht von dem Plugin unterscheidet, das zuletzt geladen wurde und das übertrumpft 63.
Entwicklung
1
Das Problem ist, dass, wenn zwei Menüelemente eine Position von 63 erhalten, das letztere das erstere überschreibt (lautlos, was einen Kopfkratzer verursacht). Wenn einer '63 -foo 'und ein anderer '63 -bar' ist, werden beide angezeigt.
Matthew Boynes
Die Position ist nur ein boolescher Wert. Wenn Sie zwei oder mehr Plugins mit demselben Positionswert haben, können Sie diese Reihenfolge nicht steuern. Ist der Job von WordPress. Derzeit haben wir Entwickler keine Möglichkeit, die Reihenfolge bei jeder Installation unserer Plugins zu kontrollieren.
Bueltge

Antworten:

1

Abgesehen vom Sortieren mit strnatcasecmp()ist der einzige andere Ort, an dem der Schlüssel verwendet werden kann, wenn jemand eine benutzerdefinierte Menüreihenfolge anwendet . Da das Menü jedoch bereits nach der Schlüsselreihenfolge sortiert wird, ist es unwahrscheinlich, dass die Schlüssel bei der benutzerdefinierten Sortierung eine Rolle spielen. Ich kann keinen anderen Grund erkennen, warum dies ein Problem verursachen würde, daher ist dies wahrscheinlich sicher. Ich würde ein Ticket öffnen , um die Inline-Dokumente zu ändern.

JD
quelle
1

Dies ist Teil eines Skripts, das ich für mein Thema verwende. Es wird nach einer leeren Position gesucht, die sich in der Nähe Ihrer gewünschten Position befindet. Scheint mir eine einfache Lösung zu sein?

//work out "safe" menu position
    global $menu;
    $safe_menu_position = 30;
    //while there IS a value
    while( !empty( $menu[$safe_menu_position] ) )
    {
        --$safe_menu_position;
    }
Dan
quelle