web-dev-qa-db-fra.com

Comment puis-je permettre aux utilisateurs d'accéder aux fonctions de plug-in basées sur des rôles?

J'utilise un plugin appelé " Live Edit " pour permettre aux auteurs et aux éditeurs de modifier le contenu front-end. Mais le problème est que le plugin permet à tous les utilisateurs connectés d’éditer le contenu. Je veux que le bouton d'édition (spécifié par le plugin. Ce ne soit pas le bouton d'édition par défaut du WP) soit accessible en fonction de ses rôles. Je ne sais pas comment le rendre accessible en fonction des rôles. Donc, essayer de le faire apparaître uniquement pour les auteurs et des rôles plus élevés à cela.

Je veux faire quelque chose comme ça dans loop.php:

<?php
global $current_user; 
get_currentuserinfo(); 
if ( user_can( $current_user, "author" ) ){ 
// Show Role
// Show Subscriber Image
} 

Voici le code:

 <?php post_class( 'post clearfix ' . $themify->get_categories_as_classes(get_the_ID()) . ' ' . $themify->get_post_color_class(get_the_ID()) ); if(function_exists("live_edit")){ live_edit('post_title, field1'); } ?>

et

<div <?php if(function_exists("live_edit")){ live_edit('post_content, myfield2'); }?>>
        <?php if( function_exists('the_field') ) the_field('myfield1'); ?> </div>
        <?php if( function_exists('the_field') ) the_field('myfield2');  ?>
</div>

Je ne suis pas sûr de savoir comment le faire dans le modèle ou via functions.php. Quelqu'un pourrait-il m'aider ou me guider pour atteindre ce que je veux?

Voici le fichier loop.php sur Pastebin - http://Pastebin.com/9MVY64LJ

La classe d'édition en direct est utilisée à la ligne 8 et à la ligne 57.

enter image description here

2
Netizen

Vous pouvez vérifier si l'utilisateur actuel est un auteur (WP-Codex)

$current_user_is_allowed_to_edit = false;
if ( current_user_can('delete_posts') ) {
        $current_user_is_allowed_to_edit = true;
}

Et utilisez-le dans l'instruction if au moment où vous implémentez la fonction Live Edit.

Voici le code complet (pour les rôles d’utilisateur): http://Pastebin.com/fY7UPcB1

MODIFIER:

Voici le nouveau code (vérifiez le rôle de l'utilisateur et s'il s'agit de son propre message):

// Check if User can Edit
$current_user_is_allowed_to_edit = false;
$user_ID = get_current_user_id();
$post_author_ID = the_author_meta('ID');

if ( current_user_can('delete_posts') && $post_author_ID == $user_ID ) {
        $current_user_is_allowed_to_edit = true;
}

http://Pastebin.com/NFtNVAGE

EDIT # 2:

Désormais, le bouton n'apparaît que pour les utilisateurs du message (auteurs) et pour tous les utilisateurs dotés d'un rôle utilisateur plus important (éditeur, administrateur).

// Check if User can Edit
// Set permission to false = 'not allowed'
$current_user_is_allowed_to_edit = false;
// Get the ID of the user who watches this post
$user_ID = get_current_user_id();
// Get the ID of the Post-Writer
$post_author_ID = the_author_meta('ID');

//   Check if User has role 'Editor' and higher  OR is the Post-Writer
if ( current_user_can('delete_posts') || $post_author_ID == $user_ID ) {
    // Set permission to true = 'allowed'
    $current_user_is_allowed_to_edit = true;
}

Code: http://Pastebin.com/8u6bV018

2
Paul Geisler