Ich erstelle eine author.php Seite und liste alle Beiträge eines Autors auf. Obwohl Administratoren die Bearbeitungslinks der Beiträge sehen können, möchte ich den Link wiederholen, wenn der angemeldete Benutzer der aktuelle Benutzer ist
zum Beispiel
wenn der Testbenutzer angemeldet ist und die aktuelle Seite/author/testuser ist, kann er Post-Links bearbeiten
aber
wenn der Testbenutzer angemeldet ist und die aktuelle Seite/author/theee ist, kann er die Links nicht sehen
derzeit habe ich
$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 {
}
aber immer noch können nur Administratoren die Links sehen.
Wenn Sie nur die Seite author.php ändern müssen, funktioniert dieser Code wahrscheinlich:
<?php
if( is_user_logged_in() && is_author(get_current_user_id()) ) {
edit_post_link('edit', '', '');
}
?>
Der erste Teil der Bedingungen prüft, ob ein Benutzer angemeldet ist. Die zweite ist wahr, wenn die aktuelle Seite die Autorenseite des aktuellen Benutzers ist.
Ich denke, der Link zum Bearbeiten des Beitrags sollte für den Autor und den Moderator des Beitrags sichtbar sein (Benutzer des Editors oder wie kann er das?).
Mein vorgeschlagener Code sieht also so aus
global $post, $current_user;
get_currentuserinfo();
if(current_user_can( 'edit_others_posts', $post->ID ) || ($post->post_author == $current_user->ID)) {
//show edit link
}
In den functions.php
Ihres Themas eingefügt, sollte dies das Verhalten von edit_post_link
global ändern. Es sollte auf allen Ihren Archiven funktionieren, nicht nur auf Ihren Autorenarchiven - alles, was edit_post_link
verwendet.
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');
Wenn nur innerhalb einer Schleife zuverlässig funktioniert, ist dies der einzige Ort, an dem Sie edit_post_link
verwenden sollten.
Wenn dies nur für Ihre Autorenarchivseiten funktionieren soll, fügen Sie diesen Code einfach vor der Schleife in die Vorlage author.php
ein und fügen Sie ihn nicht in function.php
ein. Es sollte dann nichts anderes als diese Seite bewirken. Oder Sie können einfach die Eingeweide für die Funktion verwenden, um Ihre Bedingung zu erfüllen, wie Sie es versucht haben.