it-swarm.com.de

So ändern Sie das Admin-Menü "Seiten" auf etwas anderes

Wenn Sie einen benutzerdefinierten Beitragstyp erstellen, können Sie verschiedene Elemente für diesen Beitragstyp definieren, mit denen Sie beispielsweise den Menütitel, den Text zum Hinzufügen eines neuen Beitrags und ähnliches definieren können.

Ich versuche herauszufinden, welchen Code ich zu meiner functions.php-Datei hinzufügen muss, damit ich diese Dinge für einen vorhandenen "Standard" -Post-Typ festlegen kann, den WordPress hinzufügt.

Nehmen wir zum Beispiel an, ich möchte den Beitragstyp "Seiten" in "Hauptabschnitte" ändern.

Derzeit wird der folgende Code verwendet:

add_filter( 'gettext', 'change_admin_menu_pages' );
add_filter( 'ngettext', 'change_admin_menu_pages' );
function change_admin_menu_pages( $translated ) {
    $translated = str_replace( 'Page', 'Core Page', $translated );
    $translated = str_replace( 'page', 'core page', $translated );
    return $translated;
}

Obwohl dies funktioniert und einfach jede Instanz von "pages" durch "main section" ersetzt, ist mir aufgefallen, dass es auch andere Bereiche der Site betrifft, wie z. B. Plugins, die "pages =" in ihrer URL verwenden.

Als solches ... gibt es eine einfache Möglichkeit, Einstellungen für den Post-Typ für standardmäßige WordPress-Post-Typen wie "Seiten" und "Posts" zu definieren? Wenn ja, könnte jemand bitte schnell veranschaulichen, wie das funktionieren könnte?

In einem anderen Sinne ... ich fühle das mit dem Filter

  • add_filter ('ngettext', ...)

ist eigentlich sehr nützlich, aber ich verstehe nicht, wie man den Bereich einschränkt, in dem gefiltert werden darf.

Eine Antwort auf beide oder eine der beiden Fragen wäre sehr dankbar

Danke im Voraus!

1

Noch eine einfache! :)

Wie Sie wissen, schätze ich WordPress im Allgemeinen sehr, aber die Admin-Menü-Architektur ist einer der schlimmsten Hacks, die ich je in Open-Source-Software gesehen habe . Was an Größe nur größer ist, ist die Unwilligkeit des WordPress-Kernteams, zu erkennen, wie schlimm es ist, und die mangelnde Bereitschaft, über Verbesserungen zu diskutieren. Aber ich schweife ab...

Wie auch immer, hier ist was du willst (denke ich):

Screenshot of a WordPress admin menu modified to
(Quelle: mikeschinkel.com )

Und so bekommen Sie es:

add_action('admin_menu','rename_pages_to_main_sections');
function rename_pages_to_main_sections() {
  global $menu;
  global $submenu;
  $menu[20][0] = 'Main Sections';
  $submenu['edit.php?post_type=page'][5][0] = 'Main Sections';
}

P.S. Auch der Code, den ich hier gepostet habe, ist möglicherweise hilfreich:

7
MikeSchinkel

Mike, du hättest ein kleines "Sarkasm" -Symbol auf das "Noch ein einfaches" setzen sollen! line ... für einen Moment habe ich nicht genau gesehen, wie einfach es ist, die Hauptmenü-Arrays zu hacken ... bis ich deine "Herausforderung" gelesen habe.

Ich habe mit 3.0.5 eine ähnliche Herausforderung: Versuchen Sie, eine benutzerdefinierte Seite unter einem Abschnitt mit benutzerdefinierten Beitragstypen hinzuzufügen. Dabei wird immer edit.php? Post_type = xyz geladen.

Es macht Spaß, edit.php enthält admin-header.php, das wiederum admin.php enthält, wodurch die über add_submenu_page () angegebene Seite geladen wird. Aber erstens scheint dies eher ein glücklicher Zufall zu sein, zweitens funktioniert dies erst, nachdem edit.php das gesamte Initialisierungsmaterial ausgeführt hat. SCHLECHT.

Darüber hinaus kann es später zu Problemen kommen, wenn Sie versuchen, Ihre URL oder Teile davon (z. B. Query Args und dergleichen) auf Ihrer Seite wiederzuverwenden.

Alles in allem stimme ich voll und ganz zu ... dieses Zeug ist viel zu einfach, um eine Überarbeitung der Admin-Menü-Generation zu rechtfertigen. ;-)

Trotzdem danke ich Ihnen für den Hinweis, dass ich versuchen werde, das zu erreichen, was ich durch direktes Hacken der Arrays erreichen kann.

0
wyrfel