Je crée une page author.php et répertorie tous les messages d'un auteur. Bien que les administrateurs puissent voir les liens de modification des articles, je veux faire écho au lien si l'utilisateur connecté est l'utilisateur actuel.
par exemple
si testuser est connecté et que la page actuelle est/author/testuser, il peut voir les liens de modification de publication.
mais
si testuser est connecté et que la page en cours est/author/theee, il ne peut pas voir les liens
actuellement j'ai
$curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author));
$th = $curauth->nickname;
$cu = $current_user->user_login;
if ( $th = $curauth ) {
edit_post_link('edit', '', '');
} else {
}
mais seuls les administrateurs peuvent voir les liens.
Si vous devez simplement modifier la page author.php, ce morceau de code fonctionnera probablement:
<?php
if( is_user_logged_in() && is_author(get_current_user_id()) ) {
edit_post_link('edit', '', '');
}
?>
La première partie des conditions vérifie si un utilisateur est connecté. Le second sera vrai si la page en cours est la page auteur de l'utilisateur actuel.
Je pense que le lien post-édition doit être visible pour l'auteur et le modérateur (utilisateur de l'éditeur ou comment avoir cette capacité)
Donc, mon code proposé est comme ça
global $post, $current_user;
get_currentuserinfo();
if(current_user_can( 'edit_others_posts', $post->ID ) || ($post->post_author == $current_user->ID)) {
//show edit link
}
Placé dans le functions.php
de votre thème, cela devrait globalement modifier le comportement de edit_post_link
. Cela devrait fonctionner sur toutes vos archives, pas seulement vos archives d'auteur - tout ce qui utilise edit_post_link
.
function limit_edit_Link_wpse_85214($link) {
global $post,$current_user;
get_currentuserinfo();
if ($post->post_author == $current_user->ID) {
return $link;
}
return false;
}
add_filter('get_edit_post_link','limit_edit_Link_wpse_85214');
Si ne fonctionnera que de manière fiable dans une boucle, qui est le seul endroit où vous devriez utiliser edit_post_link
de toute façon.
Si vous voulez que cela fonctionne uniquement pour les pages d'archive de votre auteur, collez simplement ce code avant la boucle dans le modèle author.php
et ne le mettez pas dans function.php
. Cela ne devrait alors affecter que cette page. Ou vous pouvez simplement utiliser le courage de la fonction pour rendre votre conditionnel, comme vous essayiez de le faire.