Création d’un nouveau rôle et assignation à un nouveau type (Créer un compte)

  • Statut : non résolu
Affichage de 1 message (sur 1 au total)
  • Auteur
    Messages
  • #509952
    erehcab
    Participant
    Chevalier WordPress
    248 contributions

    Bonjour à tous,
    j’essaie de créer un nouveau rôle spécifique à un nouveau type que j’ai créé mais une fois connecté avec ce rôle à l’interface d’administration je vois mon type mais impossible de valider la création d’un article de ce type il m’affiche ce message d’erreur :

    Vous n’avez pas l’autorisation de modifier cet article.

    De plus j’aimerai lorsque je suis connecté en tant qu’administrateur pouvoir avoir accès au type mais impossible il ne s’affiche pas dans le menu…

    Enfin voilà le code que j’utilise (intégré dans functions.php du thème) :

    add_role(‘professeur’, ‘Professeur’, array(
    ‘publish_professeur’ => true,
    ‘edit_professeur’ => true,
    ‘edit_others_professeur’ => true,
    ‘delete_professeur’ => true,
    ‘delete_others_professeur’ => true,
    ‘read_private_professeur’ => true,
    ‘edit_professeur’ => true,
    ‘delete_professeur’ => true,
    ‘read_professeur’ => true
    ));
    function my_post_type_professeur() {
    $capabilities = array(
    ‘publish_posts’ => ‘publish_professeur’,
    ‘edit_posts’ => ‘edit_professeur’,
    ‘edit_others_posts’ => ‘edit_others_professeur’,
    ‘delete_posts’ => ‘delete_professeur’,
    ‘delete_others_posts’ => ‘delete_others_professeur’,
    ‘read_private_posts’ => ‘read_private_professeur’,
    ‘edit_post’ => ‘edit_professeur’,
    ‘delete_post’ => ‘delete_professeur’,
    ‘read_post’ => ‘read_professeur’
    );
    register_post_type( ‘professeur’,
    array(
    ‘label’ => __(‘Professeur piano’),
    ‘singular_label’ => __(‘Professeur piano’, ‘toolbox’),
    ‘_builtin’ => false,
    ‘exclude_from_search’ => true, // Exclude from Search Results
    ‘capability_type’ => ‘professeur’,
    ‘capabilities’ => $capabilities,
    ‘public’ => true,
    ‘show_ui’ => true,
    ‘show_in_nav_menus’ => false,
    ‘rewrite’ => array(‘slug’ => ‘professeur’, ‘with_front’ => FALSE),
    ‘query_var’ => « professeur », // This goes to the WP_Query schema
    ‘menu_icon’ => get_template_directory_uri() . ‘/images/icone_prof.png’,
    ‘supports’ => array( ‘title’, ‘editor’, ‘author’, ‘thumbnail’, ‘excerpt’)
    )
    );
    flush_rewrite_rules( false );
    }
    add_action(‘init’, ‘my_post_type_professeur’);
    function professeur_map_meta_cap( $caps, $cap, $user_id, $args ) {
    if ( ‘edit_professeur’ == $cap || ‘delete_professeur’ == $cap || ‘read_professeur’ == $cap ) {
    $post = get_post( $args[0] );
    $post_type = get_post_type_object( $post->post_type );
    $caps = array();
    }
    if ( ‘edit_professeur’ == $cap ) {
    if ( $user_id == $post->post_author )
    $caps[] = $post_type->cap->edit_posts;
    else
    $caps[] = $post_type->cap->edit_others_posts;
    }
    elseif ( ‘delete_professeur’ == $cap ) {
    if ( $user_id == $post->post_author )
    $caps[] = $post_type->cap->delete_posts;
    else
    $caps[] = $post_type->cap->delete_others_posts;
    }
    elseif ( ‘read_professeur’ == $cap ) {
    if ( ‘private’ != $post->post_status )
    $caps[] = ‘read’;
    elseif ( $user_id == $post->post_author )
    $caps[] = ‘read’;
    else
    $caps[] = $post_type->cap->read_private_posts;
    }
    return $caps;
    }
    add_filter( ‘map_meta_cap’, ‘professeur_map_meta_cap’, 10, 4 );

    la dernière fonction (professeur_map_meta_cap) je la comprends pas forcément bien, j’ai bien saisit qu’il fallait l’utiliser pour officialiser les nouveaux droits au près de WordPress mais c’est vraiment ça…

    Je sais qu’il y a plusieurs plugins pour gérer ce genre de problématique mais j’aimerai ne pas avoir à en utiliser.

Affichage de 1 message (sur 1 au total)
  • Le forum ‘Dépôts pour les extensions, trucs, astuces’ est fermé à de nouveaux sujets et réponses.