Ich habe eine benutzerdefinierte Benutzerrolle “faquser” auf meiner wp-Site erstellt. Jetzt möchte ich das Kontaktformular 7-Menü nur für diese Rolle ausblenden (oder deaktivieren). Wie kann ich das machen? Ich habe es gesehen:
http://contactform7.com/restricting-access-to-the-administration-panel/
Aber wenn ich das tue, funktioniert das Kontaktformular nur für den Administrator und nicht für andere. Ich habe auch versucht, so etwas zu tun:
remove_menu_page('admin.php?page=wpcf7');
Dadurch wurde der Menüpunkt auch nicht entfernt.
Ich habe die Lösung gefunden:
remove_menu_page('wpcf7');
Um dies richtig zu tun, müssen Sie eine Funktion schreiben, die bestimmt, für welche Rollen Sie den Menüpunkt entfernen müssen.
remove_menu_page('wpcf7'); // This is the snippet that will remove the contact form 7 menu specifically.
Dies ist ein Beispiel für eine Funktion, die die vollständige Aufgabe erledigt.
function remove_menu_pages() {
global $user_ID;
if ( !current_user_can( 'publish_posts' ) ) {
remove_menu_page('edit-comments.php'); // Comments
remove_menu_page('edit.php?post_type=page'); // Pages
remove_menu_page('wpcf7'); // Contact Form 7 Menu
}
}
add_action( 'admin_init', 'remove_menu_pages' );
Eine vollständige Liste der Funktionen der verschiedenen Rollen in WordPress finden Sie hier: https://wordpress.org/support/article/roles-and-capabilities/
Ich habe „publish_posts“ gewählt, damit alle Benutzertypen unterhalb des Autors und die nicht über die Funktion „publish_posts“ verfügen, das Menü des Kontaktformulars 7 oder die Menüpunkte „Kommentare“ oder „Seiten“ nicht sehen.
Abhängig von den Fähigkeiten, die Sie Ihrer Benutzerrolle gegeben haben, bestimmt “faquser”, für welche Fähigkeiten Sie die Funktion aufrufen müssen.