web-dev-qa-db-fra.com

Afficher le lien de modification si l'auteur de l'article est l'utilisateur actuel

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.

2
Emre Caglar

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.

5
Mat_

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    
}
3
Manchumahara

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.

2
s_ha_dum