Zulassen, dass die Teilnehmerrolle ihre eigenen Beiträge löscht

Ich versuche Abonnentenrollen zu erlauben, ihre eigenen Beiträge mit dem folgenden Code zu löschen:

post_author == $current_user->ID) { ?> 
<a class="option" onclick="return confirm('Are you sure you want to delete ')" href="ID ) ?>"> Delete

Ich benutze den Benutzerrolleneditor, aber es funktioniert nur, wenn ich den Zugriff auf alle corerollen gewähre, was dem Abonnenten Zugriff auf das Backend gibt, was ich sicherlich nicht möchte. Irgendwelche anderen Ideen oder Lösungen, um dies zu erreichen?

Solutions Collecting From Web of "Zulassen, dass die Teilnehmerrolle ihre eigenen Beiträge löscht"

Die Fähigkeit, Beiträge zu löschen, ist delete_posts . Wenn Sie möchten, dass sie ihre eigenen veröffentlichten Posts löschen können, ist delete_published_posts .

Die zum Anzeigen des Administrationsbereichs erforderlichen functionen werden read . Abonnenten haben diese Möglichkeit nativ. Wenn Sie sie nicht entfernen, können Abonnenten auf das Back-End zugreifen.

Ich würde ein einfaches Plugin schreiben, das bei der Aktivierung der Rolle des Abonnenten die erforderlichen Fähigkeiten hinzufügt und diese bei der Deaktivierung entfernt.

Dann können Sie in Ihrem Thema nachfragen:

 if( current_user_can( 'delete_posts' ) ) { //* Show delete link } 

Da die Abonnentenrolle nicht über die Möglichkeit verfügt, delete_others_posts zu delete_others_posts , wird der Link nicht in Posts delete_others_posts , die sie nicht erstellt haben, und sie können keine Posts löschen, die sie nicht veröffentlicht haben.

 /** * Plugin Name: WordPress StackExchange Question 268755 * Description: Allow subscribers to delete their own posts **/ //* On activation, add the capabilities to the subscriber role register_activation_hook( __FILE__, 'wpse_268755_activation' ); function wpse_268755_activation() { $subscriber = get_role( 'subscriber' ); $subscriber->add_cap( 'delete_posts' ); $subscriber->add_cap( 'delete_published_posts' ); } //* On deactivation, remove the capabilities from the subscriber role register_deactivation_hook( __FILE__, 'wpse_268755_deactivation' ); function wpse_268755_deactivation() { $subscriber = get_role( 'subscriber' ); $subscriber->remove_cap( 'delete_posts' ); $subscriber->remove_cap( 'delete_published_posts' ); } 

Ohne dem Benutzer und / oder der Rolle die Möglichkeit zu geben, einen Beitrag zu löschen, sind sie nicht in der Lage, dies zu tun, selbst wenn Sie ihnen einen Löschlink zeigen. Ebenso kann ein Benutzer oder eine Rolle einen Beitrag löschen, wenn sie über die Fähigkeit verfügen, selbst wenn Sie keinen Löschlink anzeigen, da dies für sie schwieriger ist.

Sie sollten in der Lage sein, das Folgende an Ihre Bedürfnisse anzupassen. Stellen Sie sicher, dass Sie die Option für delete_posts für die Abonnentenrolle auswählen, damit diese nur ihre eigenen Beiträge löschen können.

Der Datei single.php oder php, die den Post anzeigt, kann Folgendes hinzugefügt werden, sodass unter dem Inhalt eine Schaltfläche zum Löschen des Posts angezeigt wird.

 // Check the user is author and has a role ID of subscriber as they don't have by default the delete post privilege but you can use the user role editor to allow subscribers to be able to delete there own posts and then add this code into your file where required on the post single page. if ( get_the_author_meta('ID') == get_current_user_id() && current_user_can('subscriber') ) { // owner of post and subscriber get_delete_post_link( $post->ID ); } if ( get_the_author_meta('ID') != get_current_user_id() && current_user_can('subscriber') ) { // not the owner of post and subscriber echo 'Not your post'; } else { // should be ok as not a subscriber and has delete privilages get_delete_post_link( $post->ID ); }