web-dev-qa-db-fra.com

Créer une publication personnalisée avec des règles utilisateur personnalisées

Je crée un témoignage personnalisé de type poste utilisateur et souhaite donner à cet utilisateur la permission de modifier et de supprimer ce message, mais il affiche une erreur.

1. J'ai créé une règle d'utilisateur.

    function add_testimonial_management_role() {
     add_role('testimonial_manager',
                'Testimonial Manager',
                array(
                    'read' => true,
                    'edit_posts' => false,
                    'delete_posts' => false,
                    'publish_posts' => false,
                    'upload_files' => true,
                )
            );
       }
register_activation_hook( __FILE__, 'add_testimonial_management_role' );

2. Suivant poste personnalisé ajouté

add_action( 'init', 'register_cpt_testimonials');
function register_cpt_testimonials() {
            $args = array(
            'label'               => __( 'testimonials', 'testimonials' ),
            'description'         => __( 'Testimonial', 'testimonials' ),
            'labels'              => $labels,
            'supports'            => array( 'title', 'comments', 'revisions', ),
            'hierarchical'        => false,
            'public'              => true,
            'show_ui'             => true,
            'rewrite'             => $rewrite,
                        'capability_type'     => array('testimonial','testimonials'),
                        'map_meta_cap'        => true,
        );
        register_post_type( 'testimonials', $args );
}

3. dernier j'ai créé des règles

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

        // Add the roles you'd like to administer the custom post types
        $roles = array('testimonial_manager','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_testimonial');
                 $role->add_cap( 'read_private_testimonials' );
                 $role->add_cap( 'edit_testimonial' );
                 $role->add_cap( 'edit_testimonials' );
                 $role->add_cap( 'edit_others_testimonials' );
                 $role->add_cap( 'edit_published_testimonials' );
                 $role->add_cap( 'publish_testimonials' );
                 $role->add_cap( 'delete_others_testimonials' );
                 $role->add_cap( 'delete_private_testimonials' );
                 $role->add_cap( 'delete_published_testimonials' );

        }}

Mais son spectacle, vous avez l'erreur à la fin comme ça

Notice: Undefined variable: labels in /home/mortgag1/public_html/wp-content/themes/mortgage/functions.php on line 21

Notice: Undefined variable: rewrite in /home/mortgag1/public_html/wp-content/themes/mortgage/functions.php on line 26

Fatal error: Call to a member function add_cap() on a non-object in /home/mortgag1/public_html/wp-content/themes/mortgage/functions.php on line 43

S'il vous plaît aidez-moi quelqu'un. Merci

1
Shiv Singh

je résous mon problème moi-même en remplaçant un code comme ci-dessous

j'ai remplacé

   register_activation_hook( __FILE__, 'psp_add_project_management_role' );

À

add_action('admin_init','add_testimonial_management_role',998);
0
Shiv Singh