it-swarm.com.de

Wie entferne ich den Eintrag "Neuen Beitrag erstellen" für einen benutzerdefinierten Beitragstyp?

Ich habe einen benutzerdefinierten Beitragstyp, der mithilfe eines Formulars auf der Website erstellt wird. Ich möchte die Erstellung neuer Posts von WordPress Admin aus deaktivieren. Gibt es eine Möglichkeit, das zu tun?

1
hannit cohen

Es gibt verschiedene Möglichkeiten (je nachdem, was Sie versuchen):

Wenn es um die Schaltfläche "Veröffentlichen" geht

Du könntest…

  1. … Entfernen Sie die Fähigkeit aus der Zielrolle mit remove_cap()
  2. … Entfernen Sie die Schaltfläche Veröffentlichen 1) 

    1) siehe unten in der Antwort von @toscho

  3. ... oder die ganze Meta Box 2) 

    remove_meta_box( 'submitdiv', 'custom_post_id', 'side' );
    

    2) vereinfachte Version

Wenn es um den eingebauten Pfostentyp geht

Du könntest…

  1. … Einfach den Menüeintrag über css oder js verstecken
  2. … Den Menüeintrag mit löschen

    add_action( 'admin_menu', 'myprefix_adjust_the_wp_menu', 999 );
    function myprefix_adjust_the_wp_menu() {
      $page = remove_submenu_page( 'edit.php', 'post-new.php' );
      //or for custom post type 'myposttype'.
      //$page = remove_submenu_page( 'edit.php?post_type=myposttype', 'post-new.php?post_type=myposttype' );
    }
    
  3. … Mit per_save_post hook und $_GET['action'] gar nicht speichern

  4. … Eine Umleitung durchführen, wenn der post-new.php geladen ist
2
kaiser

Es gibt eine Metafunktion create_posts, die nicht dokumentiert ist, aber von WordPress verwendet wird, um vor dem Einfügen der verschiedenen 'Add New'-Schaltflächen und -Links zu prüfen. Fügen Sie in Ihrer benutzerdefinierten Post-Typ-Deklaration capabilities hinzu (nicht zu verwechseln mit cap) und setzen Sie sie dann wie unten beschrieben auf false.

register_post_type( 'custom_post_type_name', array(
  'capabilities' => array(
    'create_posts' => false,
  )
));
8
Seamus Leahy

@ hannit cohen,

Dies ist die beste Möglichkeit, die Schaltfläche Neu hinzufügen oder Neu erstellen in benutzerdefinierten Posttypen auszublenden

'capability_type'    => 'post',

        'capabilities'       => array( 'create_posts' => false ),       

        'map_meta_cap'       => true,

Es ist deaktiviert, neue Posts in benutzerdefinierten Post-Typen sowohl im Admin-Menü als auch über der Liste der Post-Typen zu erstellen.

0
clap