Mostrar enlace de edición si el autor de la publicación es el usuario actual

2

Estoy creando una página author.php y listando todas las publicaciones de un autor. Aunque los administradores pueden ver los enlaces de edición de las publicaciones, quiero repetir el enlace si el usuario que inició sesión es el usuario actual

por ejemplo

si testuser está conectado y la página actual es / author / testuser, puede ver los enlaces de la publicación de la edición

pero

si testuser está conectado y la página actual es / author / theee no puede ver los enlaces

Actualmente tengo

$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 {

}

pero todavía solo los administradores pueden ver los enlaces.

    
pregunta Emre Caglar 09.02.2013 - 16:42

3 respuestas

5

Si solo tienes que modificar la página author.php, este fragmento de código probablemente funcionará:

<?php 

if( is_user_logged_in() && is_author(get_current_user_id()) ) {

    edit_post_link('edit', '', '');

}

?>

La primera parte de las condiciones verifica si hay un usuario registrado. La segunda será verdadera si la página actual es la página de autor del usuario actual.

    
respondido por el Mat_ 06.12.2013 - 13:34
3

Creo que el enlace de edición posterior debe ser visible para el autor y moderador de la publicación (usuario editor o cómo tiene esa capacidad)

Así que mi código propuesto es así

global $post, $current_user;
get_currentuserinfo();

if(current_user_can( 'edit_others_posts', $post->ID ) || ($post->post_author == $current_user->ID))  { 

    //show edit link    
}
    
respondido por el Manchumahara 27.02.2014 - 13:14
2

Colocado en functions.php de tu tema, esto debería alterar globalmente el comportamiento de edit_post_link . Debería funcionar en todos sus archivos, no solo en los archivos de su autor: todo lo que use 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 solo funcionará de manera confiable dentro de un Loop, que es el único lugar donde deberías usar edit_post_link

Si desea que esto funcione solo para sus páginas de archivo de autor, simplemente pegue ese código antes del Bucle en la plantilla author.php y no lo ponga en function.php . No debería afectar nada más que esa página entonces. O simplemente puede utilizar las agallas de la función para hacer que su condicional, como lo estaba tratando de hacer.

    
respondido por el s_ha_dum 09.02.2013 - 17:23

Lea otras preguntas en las etiquetas