benutzerdefinierte Post-Typ-functionen – muss sehr sicher sein

Hi Ich versuche, benutzerdefinierte Post-Typ-functionen für Mitarbeiterverträge auf einer Intranet-Website zu definieren, so dass aufgrund der Empfindlichkeit der Informationen dies so sicher wie möglich sein muss und einfach die Menüverknüpfungen über jQuery oder CSS ausblenden ist nicht gut genug.

So habe ich den Post-Typ im Moment definiert:

function user_contract_post_type(){ register_post_type( 'Contract', array( 'labels' => array( 'name' => __('Contracts', 'intranet'), 'singular_name' => __('Contract', 'intranet') ), 'public' => true, 'publicly_queryable' => true, 'exclude_from_search' => true, 'show_ui' => true, 'menu_position' => 71, 'query_var' => true, 'has_archive' => false, 'rewrite' => array( 'slug' => 'contracts', 'with_front' => false, 'feeds' => false ), 'hierarchical' => false, 'supports' => array( 'title', 'editor', 'page-attributes' ), 'capability_type' => 'contract', 'capabilities' => array( 'edit_contract', 'read_contract', 'delete_contract', 'publish_contract', 'edit_contracts', 'delete_contracts', 'delete_published_contracts', 'edit_published_contracts' ), 'map_meta_cap' => true, 'can_export' => true ) ); } add_action('init', 'user_contract_post_type'); 

Das erlaubt mir, die Verträge zu bearbeiten, wie ich den Link Verträge im Admin-Hauptmenü und den Bearbeitungsbildschirm Verträge sehe, während andere Benutzer das nicht können, aber ich kann nichts anderes machen. Alles, was ich tun kann, ist, einen bereits veröffentlichten Vertrag zu lesen und zu aktualisieren und neue Verträge zur Überprüfung vorzuschauen und einzureichen.

Irgendwelche Hilfe ist viel appéciated. Vielen Dank!

Solutions Collecting From Web of "benutzerdefinierte Post-Typ-functionen – muss sehr sicher sein"

Sie werden wahrscheinlich in die Zuordnung der Metakapseln schauen wollen. Dadurch haben Sie eine function, die individuell vor WordPress entscheidet, ob bestimmte functionen zur Verfügung stehen oder nicht.

Damit können Sie eine Überprüfung der Benutzerebene (z. B. Administrator) durchführen und nur Zugriff gewähren, um Verträge zu lesen und zu bearbeiten, wenn der Benutzer diese Ebene erreicht. Sie können sogar noch weiter gehen, um nicht nur nach einem Administrator zu suchen, sondern auch zu überprüfen, ob der Benutzer eine bestimmte ID (oder einen Satz von IDs) hat.

 add_action( 'map_meta_cap', 'my_meta_cap', 10, 4 ); function my_meta_cap( $caps, $cap, $user_id, $args ){ if( current_user_can( 'administrator' ) ){ return array( 'edit_contract' ); } return array(); } 

Sie können auch coole Dinge tun, überprüfen Sie den Autor des Vertrags und solche, bevor Sie Zugriff gewähren. Sie können eine benutzerdefinierte Regel erstellen, die besagt, dass der von Ihnen geschriebene Vertrag nicht von jemand anderem bearbeitet werden kann, aber Sie können den Vertrag eines anderen bearbeiten.

Es gibt ein paar interessante Referenzen, um mehr über diese granulare Kontrolle zu erfahren. Ich habe diese bei der Recherche Ihrer Frage gefunden (in Google):

  • Meta-functionen für benutzerdefinierte Post-Typen
  • Was ist die Verwendung von Karten-Metakapseln?