musa haidari
Estoy desarrollando mi primer complemento de WordPress. Digamos que tiene las siguientes páginas de administración:
- Configuración general
- Agregar nuevo proveedor
- Vendedores
- Editar proveedor
De la que no quiero mostrar la Editar proveedor en el menú y desea que sea accesible mediante un enlace en Vendedores página. Mi menú y Vendedores página son:
Código para generar el menú:
function nes_general_settings_view () {
require_once("views/admin/general_settings.php");
}
function nes_vendor_view () {
require_once("views/admin/vendor.php");
}
function nes_vendor_new_view () {
require_once("views/admin/vendor_new.php");
}
function nes_vendor_edit_view () {
require_once("views/admin/vendor_edit.php");
}
add_action("admin_menu", function () {
add_menu_page(
"Service",
"Service",
"manage_options",
"nes_general_settings",
"nes_general_settings_view",
null,
4
);
add_submenu_page( "nes_general_settings", "General Settings", "General Settings", 0, "nes_general_settings", "nes_general_settings_view");
add_submenu_page( "nes_general_settings", "Vendors", "Vendors", 0, "nes_vendor", "nes_vendor_view");
add_submenu_page( "nes_general_settings", "New Vendor", "New Vendor", 0, "nes_vendor_new", "nes_vendor_new_view");
add_submenu_page( "nes_fake_id", "Edit Vendor", "Edit Vendor", 0, "nes_vendor_edit", "nes_vendor_edit_view");
});
Y Código para generar el enlace a Editar proveedor página:
<a href="https://stackoverflow.com/questions/23468919/<?=admin_url("admin.php?page=nes_vendor_edit")?>">Edit</a>
Pero cuando estoy en Editar proveedor página, mi menú no está seleccionado.
Cómo establecer Servicio > Proveedores submenú seleccionado, cuando estoy en Editar proveedor?
En el caso de que sus submenús sean tipos de publicaciones personalizadas, puede definirlos fácilmente como elementos de submenú de un menú personalizado configurando el parámetro de tipo de publicación personalizada de “show_in_menu” como el slug que definió al crear su personalizado. -tipo de mensaje. Si lo hace de esta manera, se mantendrá el menú predeterminado abierto/cerrado y se resaltará el elemento del submenú actual en el menú de administración.
Por ejemplo:
/* ————————————————————————— */
/* Content Types Menu Item
/* ————————————————————————— */
add_menu_page(
'Content Types',
'Content Types',
'manage_options',
'custom-content', // menu slug
'ds_create_new_submenu',
'dashicons-editor-table',
null
);
Y luego, en sus argumentos de tipo de publicación personalizados, defina show_in_menu para que coincida con el slug del menú.
$args = array(
'labels' => $labels,
'menu_icon' => 'dashicons-format-status',
'capability_type' => 'manage_options',
'show_in_menu' => 'custom-content'
);
Ejemplos de código abreviados por simplicidad
brasofilo
Esto tiene que hacerse con jQuery para añadir las clases adecuadas al menú de administración.
Use lo siguiente para imprimir el script:
# Grab the slug to print only in this screen
$hook = add_submenu_page(
null, # better than fake id
"Edit Vendor",
"Edit Vendor",
'manage_options', # IMPORTANT, don't use levels (0-9), they're deprecated
"nes_vendor_edit",
function() {
echo '<h1>nes_vendor_edit_view</h1>';
}
);
add_action( "admin_footer-$hook", function()
{
# http://stackoverflow.com/questions/5673269/what-is-the-advantage-of-using-heredoc-in-php
echo <<<HTML
<script type="text/javascript">
jQuery(document).ready( function($) {
$('#toplevel_page_nes_general_settings')
.addClass('current wp-has-current-submenu wp-menu-open');
});
</script>
HTML;
});
-
Gran respuesta. Solo queria mencionar para que los “Proveedores” tambien seleccionados, agregué la clase
current
a suli
etiqueta.– Musa Haidari
10 de mayo de 2014 a las 7:34
-
establezca $plugin_page global en su submenú slug en el filtro ‘parent_file’
– tutankamón
4 de marzo de 2015 a las 13:54
-
También puede agregar la clase “actual” a la etiqueta “a” dentro de la etiqueta “li”: $(‘#toplevel_page_nes_general_settings a’) … De lo contrario, cuando pasamos el mouse, cambia el ícono, al menos cuando lo probé, yo necesitaba hacer esto.
– Nicolás
7 oct 2017 a las 13:05
Respondido el WordPress StackExchange
– Muerte 1305
28 mayo 2020 a las 20:05