X

Benutzerdefinierten Beitragstyp-Menü als Untermenü anzeigen

Schnipsel von IsItWP

Möchten Sie den benutzerdefinierten Beitragstyp als Untermenü im Menü zur Beitragsbearbeitung anzeigen? Obwohl es wahrscheinlich ein Plugin dafür gibt, haben wir einen schnellen Code-Schnipsel erstellt, den Sie verwenden können, um benutzerdefinierte Beitragstyp-Menüs als Untermenü in WordPress anzuzeigen.

Anweisungen:

Sie müssen diesen Code nur zur functions.php-Datei Ihres Themes oder in ein websitespezifisches Plugin einfügen:

function nacin_register_slideshows_post_type() {
	register_post_type( 'slideshow', array(
		'labels' => array(
			'name' => 'Slideshows',
			'singular_name' => 'Slideshow',
		),
		'public' => true,
		'show_ui' => true,
		'show_in_menu' => 'edit.php',
		'supports' => array( 'title' ,'thumbnail', 'editor' ),
	) );
}
add_action( 'init', 'nacin_register_slideshows_post_type' );

Hinweis: Wenn Sie zum ersten Mal Code-Schnipsel in WordPress hinzufügen, lesen Sie bitte unseren Leitfaden, wie Sie Code-Schnipsel richtig in WordPress hinzufügen, damit Sie Ihre Website nicht versehentlich beschädigen.

Wenn Ihnen dieser Code-Schnipsel gefallen hat, ziehen Sie bitte in Betracht, unsere anderen Artikel auf der Website zu lesen, wie z. B.: 43 beste Fotografie-Themes für WordPress und wie man ein Kontaktformular in WordPress erstellt.

Kommentare   Hinterlasse eine Antwort

  1. Ich registriere post_type mit 'Neuen Eintrag hinzufügen', aber 'Neuen Eintrag hinzufügen' wird nicht im Untermenü angezeigt. Haben Sie Vorschläge für mein Problem?

  2. Schön. Ich versuche, dies einen Schritt weiter zu bringen und den Beitragstyp an eine benutzerdefinierte Menüseite anzuhängen. Bisher kein Erfolg... irgendwelche Gedanken?

    1. Ihre Frage ist alt, aber ich dachte, dies könnte für jemand anderen nützlich sein.
      Ich habe lange im WP-Quellcode gesucht, um dasselbe zu tun:
      Ich habe ein benutzerdefiniertes Menü, das mit add_menu_page() erstellt wurde. Es hat eine Handvoll
      Untermenüpunkte. Ich habe einen benutzerdefinierten Beitragstyp, der mit diesem Menü zusammenhängt, und ich
      wollte, dass die Links zum Hinzufügen/Auflisten dieses Beitragstyps Untermenüpunkte sind.

      Kurze Antwort: Kein einfacher Weg, dies in WP zu tun. Die Art und Weise, wie
      es die Menüs und die Benutzeroberfläche für benutzerdefinierte Beitragstypen generiert, bedeutet, dass es keinen einfachen Aufruf gibt, den Sie machen können.

      Lösung:
      1. Registrieren Sie Ihren Beitragstyp mit den
      folgenden Optionen:
      'show_ui' => true,
      'show_in_menu' => false
      In
      diesem Beispiel ist mein benutzerdefinierter Beitragstyp acct_notes

      2. Fügen Sie in der functions.php-Datei Ihres Themes oder Ihrer Plugin-Datei eine Aktion zu
      admin_menu hinzu:
      add_action('admin_menu',
      'modify_admin_menus');

      3. Fügen Sie submenu_pages für die beiden UI-Links des Beitrags hinzu – Beiträge auflisten, neuen Beitrag erstellen.
      Der erste Parameter ist der Slug des Menüs, zu dem Sie ihn hinzufügen. Der zweite
      ist der Name, der auf der Seite angezeigt wird. Der dritte ist, wie der Link angezeigt wird. Der vierte ist die Berechtigung, die zum Zugriff darauf erforderlich ist. Der fünfte ist der Slug
      für diesen Menüpunkt. Und der letzte ist die Funktion, die die Ausgabe generiert. In
      diesem Fall werden wir sie nicht verwenden, daher können wir NULL übergeben.

      add_submenu_page('members', 'Account Notes', 'Account Notes',
      'manage-options', 'view_account_notes', NULL);

      4. Der letzte Schritt ist die Funktion, die diese Untermenü-Links so ändert, dass
      sie zu den richtigen Seiten der Beitrags-UI führen.

      function modify_admin_menus(){
      global $submenu;

      if(array_key_exists('members', $submenu)){

      foreach($submenu['members'] as $key => $value){
      $k =
      array_search('view_account_notes', $value);
      if($k){

      $submenu['members'][$key][$k] =
      (current_user_can($submenu['members'][$key][1]))?
      admin_url('/edit.php?post_type=acct_notes') : '';
      }

      $l = array_search('new_account_note', $value);

      if($l){
      $submenu['members'][$key][$l] =
      (current_user_can($submenu['members'][$key][1]))?
      admin_url('/post-new.php?post_type=dojo_acct_notes') : '';}

      }
      }
      }

      In der Funktion wird überprüft, ob unser oberstes Menüelement (Mitglieder) im globalen $submenu-Array vorhanden ist – es könnte fehlen, wenn der Benutzer keine Berechtigung zum Zugriff darauf hat. Wenn ja, wird geprüft, ob dieses oberste Menüelement eine Untermenüseite mit dem Slug „view_account_notes“ hat – was wir in add_submenu_page zugewiesen haben. Schließlich wird die in add_submenu_page zugewiesene Berechtigung überprüft und wenn der aktuelle Benutzer diese Berechtigung hat, wird der neue Link ausgegeben. Wenn nicht, wird der Link komplett entfernt.

      Wir führen dieselbe Prüfung zweimal durch – einmal für den Link zum Auflisten unseres benutzerdefinierten Beitragstyps und einmal für den Link zum Hinzufügen eines neuen benutzerdefinierten Beitragstyps.

      Es wäre weitaus besser, diese Funktion integriert zu haben, aber dies ermöglicht es Ihnen, benutzerdefinierte Beitrags-Benutzeroberflächen zu jedem gewünschten Menü hinzuzufügen.

  3. Vielen Dank. Können Sie mir bitte helfen? Ich habe ein Problem: Ich möchte ein Menü in WordPress-Admin erstellen, das viele untergeordnete benutzerdefinierte Beitragstypen enthält, um die Verwaltung zu erleichtern. Beispiel:

    Menü Einrichtungen umfassen Beitragstypen: – Besprechungen; – Hochzeiten; – SPA

    Vielen Dank für Ihre Hilfe.

  4. guter Hack. Danke.

    1. kein Problem, jederzeit,

    2.  Es ist kein Hack, es ist ein Feature

Kommentar hinzufügen

Wir freuen uns, dass Sie einen Kommentar hinterlassen haben. Bitte beachten Sie, dass alle Kommentare gemäß unserer Datenschutzrichtlinie moderiert werden und alle Links nofollow sind. Verwenden Sie KEINE Schlüsselwörter im Namensfeld. Lassen Sie uns ein persönliches und bedeutungsvolles Gespräch führen.

WordPress Launch Checkliste

Die ultimative Checkliste für den Start von WordPress

Wir haben alle wichtigen Checklistenpunkte für den Start Ihrer nächsten WordPress-Website in einem praktischen E-Book zusammengefasst.
Ja, senden Sie mir das kostenlose E-Book!