J'autorise le rôle d'utilisateur auteur à ajouter/modifier des messages (à l'aide d'un type de message personnalisé appelé "Messages de l'utilisateur"), ainsi qu'à ajouter/modifier son propre média à partir de wp-admin. Je l'ai actuellement configuré pour que les seuls éléments de menu qu'ils voient soient les "messages de l'utilisateur", "nouveau message de l'utilisateur", "Média" et "Télécharger le média", avec les URL suivantes: post-new.php? Post_type = tsv_userpost edit.php ? post_type = tsv_userpost upload.php media-new.php
Le seul problème est que si l'utilisateur tape dans l'URL, par exemple, post-new.php (sans la partie de type post personnalisée), Wordpress leur permet toujours de voir cette page. Pas de bueno.
Existe-t-il un moyen de rediriger ou d’afficher un message d’erreur aux utilisateurs s’ils ne sont pas administrateurs et s’ils atterrissent sur n’importe quelle page wp-admin SAUF les URL ci-dessus?
J'ai essayé d'utiliser ce code (juste pour la page post-new.php) à partir d'un autre thread, mais il ne semble rien faire:
//Show error message if authors try to access wrong wp-admin pages
add_action('admin_head','my_restrict_access');
function my_restrict_access_meassage(){
global $pagenow;
if ($pagenow == 'post-new.php' && !current_user_can( 'switch_themes' )){
echo '<div class="wrap"><br />
<div id="message" class="error">You Dont have the right permissions to access this page</div>
</div>';
exit();
}
}
Merci c'est avance.
EDIT: Voici le code que j'ai fini avec qui fonctionne:
//Restrict access to authors in wp-admin pages
//Show error message if authors try to access wrong wp-admin pages
add_action('admin_head','my_restrict_access');
function my_restrict_access(){
$Path=$_SERVER['REQUEST_URI'];
$basepath='http://www.theseattlevine.com/wordpress/wp-admin';
$URI='http://www.theseattlevine.com'.$Path;
if ( ($URI ==($basepath . '/post-new.php')) && !current_user_can ('manage_categories') ) {
echo '<div class="wrap"><br />
<div id="message" class="error">You Dont have the right permissions to access this page. Try these links instead:
<ul>
<li><a href="/">The Vine Homepage</a></li>
<li><a href="/wordpress/wp-admin/post-new.php?post_type=tsv_userpost">Add a new user post</a></li>
<li><a href="/dashboard">Your dashboard</a></li>
</ul>
</div>
</div>';
exit();
}
elseif ( ($URI ==($basepath . '/edit.php')) && !current_user_can ('manage_categories') ) {
echo '<div class="wrap"><br />
<div id="message" class="error">You Dont have the right permissions to access this page. Try these links instead:
<ul>
<li><a href="/">The Vine Homepage</a></li>
<li><a href="/wordpress/wp-admin/post-new.php?post_type=tsv_userpost">Add a new user post</a></li>
<li><a href="/dashboard">Your dashboard</a></li>
</ul>
</div>
</div>';
exit();
}
}
Assurez-vous que le deuxième paramètre de la fonction "add_action" correspond au nom de votre fonction de restriction d'accès. Ça devrait ressembler a quelque chose comme ca:
add_action('admin_head','my_restrict_access');
function my_restrict_access(){ /* code as before */ }
Heureux d'avoir pu aider. :)