Tengo el siguiente código, que limpia muchas cosas que no se utilizarán en el área de administración:
add_action( 'admin_menu', 'my_remove_menu_pages' );
function my_remove_menu_pages() {
remove_menu_page( 'edit.php' ); //Posts
remove_menu_page( 'upload.php' ); //Media
remove_menu_page( 'edit-comments.php' ); //Comments
remove_menu_page( 'themes.php' ); //Appearance
remove_menu_page( 'users.php' ); //Users
remove_menu_page( 'tools.php' ); //Tools
remove_menu_page( 'options-general.php' ); //Settings
};
Sin embargo, hay dos elementos de menú que se han insertado desde complementos.
Cuando paso el mouse sobre cada elemento del menú, dice que los enlaces son:
/wp-admin/edit.php?post_type=acf
/wp-admin/admin.php?page=wpcf7
¿Hay alguna manera de ocultar estas páginas del menú también?
Respuestas:
Debe usar los ganchos correctos (que no siempre son los mismos que los URL / slugs), y no está de más usar un gancho que se ejecute más tarde (por ejemplo,
admin_init
):Puede usar lo siguiente para depurar:
Esto proporciona (para mi configuración) lo siguiente para la página del menú del complemento Contact Form 7:
El elemento de la matriz con la clave
2
es lo que busca:wpcf7
.fuente
remove_menu_page()
fue de gran ayuda: ¡me enseñó a pescar en lugar de simplemente entregarme el pescado!Puede depurar todo esto con lo siguiente para obtener toda la información que necesita:
Las teclas le darán los valores de la matriz que le permiten hacer todo esto con los globales de WordPress (aunque no se recomienda)
Y para eliminar para ciertos usuarios simplemente haga lo mismo, excepto con las capacidades agregadas:
Y PARA ATENTARLO TODO JUNTO ¿POR QUÉ NO ACORTAR NUESTRO CÓDIGO? PUEDE UTILIZAR ARRAYS PARA EVITAR LA ESCRITURA remove_submenu_page 50 veces. Esto también funciona con los nodos de la barra de herramientas:
fuente
Probablemente necesite establecer la prioridad add_action a un número mayor y orientar esos dos nuevos enlaces específicamente de esta manera:
Campos personalizados avanzados también proporciona un documento de ayuda sobre cómo hacer esto para su menú aquí:
http://www.advancedcustomfields.com/resources/how-to/how-to-hide-acf-menu-from-clients/
Contact Form 7 también tiene su propia forma de restringir la visibilidad del menú:
http://contactform7.com/restricting-access-to-the-administration-panel/
fuente
remove_menu_page( 'wpcf7' );
Actualizar
Yo creé un fragmento de código con una función más robusta que se ocupa de los dos menús principales y elementos del submenú.
Respuesta original
En lugar de especificar los menús que desea eliminar, especifique los menús que desea mantener :)
De esta manera, no tiene que buscar nombres de complementos y modificar el código cuando agrega nuevos complementos.
fuente
Necesita encontrar el $ menu_slug correcto. El siguiente código funcionó para mí:
fuente
Por supuesto, puede especificar solo los elementos que desea eliminar. Echa un vistazo al siguiente código:
Esto es solo lo negativo del método de numediaweb. Gracias @numediaweb. Funciona bien.
PD: 'menu_item_1 / n' -> coloca el mouse sobre el elemento del menú y busca la página exacta de ese elemento del menú que se muestra en el enlace.
fuente
usa este fragmento de código
fuente