it-swarm.com.de

Beschränken Sie den kostenlosen Beitragstyp auf die Administratorrolle der Site

Wie kann ich verhindern, dass dieser benutzerdefinierte Beitragstyp für Benutzer ohne Administratorrechte im Dashboard angezeigt wird?

/* Add Websites Custom Post Type */
add_action( 'init', 'create_website_type' );
function create_website_type() {

    register_post_type( 'website',
        array(
            'labels' => array(
                'name' => __( 'Websites' ),
                'singular_name' => __( 'Website' ),
                'add_new' => __( 'Add New Website' ),
                'add_new_item' => __( 'Add New Website' ),
                'edit' => __( 'Edit Website' ),             
                'edit_item' => __( 'Edit Website' ),                
                'new_item' => __( 'Add New Website' ),              
                'view' => __( 'View Website' ),         
                'view_item' => __( 'View Website' ),                    
                'search_items' => __( 'Search Websites' ),  
                'not_found' => __( 'No Websites Found' ),
                'not_found_in_trash' => __( 'No Websites found in Trash' ),                                         
            ),
            'description' => __('Websites to be shown in Resources section.'),
            'public' => true,
            'show_ui' => true,
            'publicly_queryable' => true,
            'exclude_from_search' => false,
            'menu_position' => 20,
            'supports' => array('title', 'editor'),
            'can_export' => true        
        )
    ); 
    remove_post_type_support('website','editor'); 
}
15
urok93

register_post_type() akzeptiert einen Parameter capabilities in seinen Argumenten. Mögliche Werte finden Sie unter get_post_type_capabilities(). Aus den Kommentaren:

Standardmäßig werden sieben Schlüssel als Teil des Capabilities-Arrays akzeptiert:

  • edit_post, read_post und delete_post sind Metafunktionen, die im Allgemeinen in Abhängigkeit vom Kontext, dh dem zu bearbeitenden/zu lesenden/zu löschenden Beitrag und dem zu überprüfenden Benutzer oder der zu überprüfenden Rolle, den entsprechenden primitiven Funktionen zugeordnet werden. Daher würden diese Funktionen Benutzern oder Rollen im Allgemeinen nicht direkt gewährt.

  • edit_posts - Steuert, ob Objekte dieses Beitragstyps bearbeitet werden können.

  • edit_others_posts - Steuert, ob Objekte dieses Typs, deren Eigentümer andere Benutzer sind, bearbeitet werden können. Wenn der Beitragstyp keinen Autor unterstützt, verhält sich dieser wie edit_posts.
  • publish_posts - Steuert das Veröffentlichen von Objekten dieses Beitragstyps.
  • read_private_posts - Steuert, ob private Objekte gelesen werden können.

Diese vier primitiven Fähigkeiten werden an verschiedenen Stellen im Kern überprüft. Es gibt auch sieben andere Grundfunktionen, auf die im Kern nicht direkt verwiesen wird, mit Ausnahme von map_meta_cap(), das die drei oben genannten Metafunktionen verwendet und sie in eine oder mehrere Grundfunktionen übersetzt, die dann je nach Kontext mit dem Benutzer oder der Rolle abgeglichen werden müssen .

  • read - Steuert, ob Objekte dieses Beitragstyps gelesen werden können.
  • delete_posts - Steuert, ob Objekte dieses Beitragstyps gelöscht werden können.
  • delete_private_posts - Steuert, ob private Objekte gelöscht werden können.
  • delete_published_posts - Steuert, ob veröffentlichte Objekte gelöscht werden können.
  • delete_others_posts - Steuert, ob Objekte, deren Eigentümer andere Benutzer sind, gelöscht werden können. Wenn der Beitragstyp keinen Autor unterstützt, verhält sich dieser wie delete_posts.
  • edit_private_posts - Steuert, ob private Objekte bearbeitet werden können.
  • edit_published_posts - Steuert, ob veröffentlichte Objekte bearbeitet werden können.

Diese zusätzlichen Funktionen werden nur in map_meta_cap() verwendet. Daher werden sie standardmäßig nur zugewiesen, wenn der Beitragstyp mit dem Argument 'map_meta_cap' auf true registriert ist (Standard ist false).

Fügen Sie in Ihren Registrierungsargumenten Folgendes hinzu:

'capabilities' => array(
    'edit_post'          => 'update_core',
    'read_post'          => 'update_core',
    'delete_post'        => 'update_core',
    'edit_posts'         => 'update_core',
    'edit_others_posts'  => 'update_core',
    'delete_posts'       => 'update_core',
    'publish_posts'      => 'update_core',
    'read_private_posts' => 'update_core'
),
11
fuxia