Удалите функцию «Добавить новый», оставив возможность редактирования для пользовательского типа роли - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь ограничить функциональность «добавления нового» для моего пользовательского типа («резиденты») для любого пользователя ниже, чем редактор.Однако я бы хотел, чтобы моя пользовательская роль (так же называемая «резидент») могла редактировать существующие (и будущие) CPT

. Я отказался от этого предложения: https://stackoverflow.com/a/3248103/3239470, и оно делаетдействительно работает, но он стирает «добавление нового» для всех, включая администраторов / редакторов, которые мне все еще нужны.

Я попытался добавить возможность create_posts / create_residents для администраторов / редакторов, но этопохоже, не принимает или не отменяет возможности, установленные в зарегистрированном CPT.

Я также делаю это в рамках настройки мультисайта, если это будет полезно знать.

Я бы предпочел не удалять его через CSS, но на самом деле отключить прямую ссылку, должен ли кто-то печатать URL, но я начинаю думать, что это мой единственный вариант?Любое направление или совет приветствуется.

            /* Register 'Resident' role */
            function add_resident_role() {
             add_role('resident',
                        'Resident',
                        array(
                            'read' => true,
                            'edit_posts' => false,
                            'delete_posts' => false,
                            'publish_posts' => false,
                            'upload_files' => false,
                        )
                    );
               }
               register_activation_hook( __FILE__, 'add_resident_role' );


    function residents_post_type() {

       // Labels
        $labels = array(
            'name' => _x('Residents', 'post type general name'),
            'singular_name' => _x('Resident', 'post type singular name'),
            'menu_name' => 'Residents',
            'add_new' => _x('Add New', 'residents item'),
            'add_new_item' => __('Add New Resident'),
            'edit_item' => __('Edit Resident'),
            'new_item' => __('New Resident'),
            'view_item' => __('View Resident'),
            'search_items' => __('Search Residents'),
            'not_found' =>  __('No Residents Found'),
            'not_found_in_trash' => __('No Residents Found in Trash'),
            'parent_item_colon' => ''
        );

    // Register post type
    register_post_type('residents' , array(
        'labels' => $labels,
        'public' => true,
        'has_archive' => true,
        'show_in_nav_menus' => true,
        'menu_icon'   => 'dashicons-id-alt',
        'supports' => array('title', 'thumbnail', 'author'),
        'show_in_rest'  => true,
        'exclude_from_search' => true,
        'publicly_queryable' => false,
        'capability_type'     => array('resident','residents'),
        'map_meta_cap' => true,

    ) );
    }
    add_action( 'init', 'residents_post_type', 0 );

    /* Assign Capabilities back to editor and admin parties */

    add_action('admin_init','add_regular_role_caps',999);
    function add_regular_role_caps() {

        // Add the roles you'd like to administer the custom post types
        $roles = array('editor','administrator');

        // Loop through each role and assign capabilities
        foreach($roles as $the_role) { 

             $role = get_role($the_role);

                 $role->add_cap( 'read' );
                 $role->add_cap( 'read_residents');
                 $role->add_cap( 'read_private_residents' );
                 $role->add_cap( 'edit_resident' );
                 $role->add_cap( 'edit_residents' );
                 $role->add_cap( 'edit_others_residents' );
                 $role->add_cap( 'edit_published_residents' );
                 $role->add_cap( 'publish_residents' );
                 $role->add_cap( 'delete_others_residents' );
                 $role->add_cap( 'delete_private_residents' );
                 $role->add_cap( 'delete_published_residents' );        
        }
    }


    /* Assign Capabilities to resident */

    add_action('admin_init','add_resident_role_caps',999);
    function add_resident_role_caps() {

        // Add the roles you'd like to administer the custom post types
        $roles = array('resident');

        // Loop through each role and assign capabilities
        foreach($roles as $the_role) { 

             $role = get_role($the_role);

                 $role->add_cap( 'read' );
                 $role->add_cap( 'read_residents');
                 $role->add_cap( 'read_resident' );
                 $role->add_cap( 'edit_resident' );
                 $role->add_cap( 'edit_residents' );
                 $role->add_cap( 'publish_residents' );
                 $role->remove_cap( 'create_residents' );
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...