Matanya
Estoy tratando de eliminar algunos menús de nivel superior en el panel de administración de wordpress. Por extraño que parezca, recibo un mensaje de error del archivo plugin.php, donde se declara la función, que dice:
“Argumento no válido suministrado para foreach() en C:\wamp\www\wordpress-alut\wp-admin\includes\plugin.php en la línea 1261”. Fui al archivo y encontré el siguiente código:
function remove_menu_page( $menu_slug ) {
global $menu;
foreach ( $menu as $i => $item ) { // **this is line 1261**
if ( $menu_slug == $item[2] ) {
unset( $menu[$i] );
return $item;
}
}
return false;
}
Es importante tener en cuenta que cuando uso remove_submenú_page(), que es la siguiente función en plugin.php, no aparece ese error. mi función, ubicada en functions.php:
add_action( 'admin_init', 'mf_remove_menu_pages' );
function mf_remove_menu_pages() {
remove_menu_page('link-manager.php');
remove_menu_page('index.php');
remove_menu_page('users.php');
remove_menu_page('upload.php');
remove_menu_page('tools.php');
remove_menu_page('edit.php');
remove_menu_page('edit-comments.php');
remove_menu_page('post-new.php');
remove_submenu_page('themes.php','themes.php');
remove_submenu_page('themes.php','theme-editor.php');
remove_submenu_page('themes.php','widgets.php');
};
sabari
estas llamando mf_remove_menu_pages()
antes de $menu
está realmente configurado, o parece en los casos en que $menu
nunca se configura. Tienes que esperar a que admin_menu
enganchar para poder llamar remove_menu_page()
. Si lo estás haciendo en admin_init
entonces estás usando el enlace incorrecto, y es por eso que está funcionando en las solicitudes de AJAX
Así que necesitas cambiar tu gancho. Por favor intente con esto:
add_action( 'admin_menu', 'mf_remove_menu_pages' );
function mf_remove_menu_pages() {
remove_menu_page('link-manager.php');
remove_menu_page('index.php');
remove_menu_page('users.php');
remove_menu_page('upload.php');
remove_menu_page('tools.php');
remove_menu_page('edit.php');
remove_menu_page('edit-comments.php');
remove_menu_page('post-new.php');
remove_submenu_page('themes.php','themes.php');
remove_submenu_page('themes.php','theme-editor.php');
remove_submenu_page('themes.php','widgets.php');
}
Espero que esto ayude 🙂
-
Muchas gracias, me ahorró demasiado tiempo.
– usuario1466291
24/03/2013 a las 18:40
En las versiones más nuevas de WordPress, para eliminar algunas subpáginas como theme-editor.php
(o subpáginas introducidas por el complemento Jetpack) debe enlazar con el admin_menu
gancho con una prioridad muy alta.
por ejemplo, para eliminar theme-editor.php
necesita establecer una prioridad de aproximadamente 120
. Para las páginas de Jetpack, necesita algo alrededor 2000
.
add_action( 'admin_menu', 'mf_remove_menu_pages', 120 );
function mf_remove_menu_pages() {
remove_menu_page('link-manager.php');
remove_menu_page('index.php');
remove_menu_page('users.php');
remove_menu_page('upload.php');
remove_menu_page('tools.php');
remove_menu_page('edit.php');
remove_menu_page('edit-comments.php');
remove_menu_page('post-new.php');
remove_submenu_page('themes.php','themes.php');
remove_submenu_page('themes.php','theme-editor.php');
remove_submenu_page('themes.php','widgets.php');
}
Esto también se afirma en el Códice de WordPress y en el Foros de soporte de WordPress.
¿Necesitan?
.php
¿al final?– Nick Shvelidze
29 de enero de 2012 a las 10:34