orlando p.
He buscado y buscado y no puedo encontrar otra forma que no sea a la que me referiré como el “método de pirateo” para agregar una taxonomía personalizada a un menú de administración personalizado.
add_menu_page(
'Practice Directory',
'Practice Directory',
'read',
'practice-directory',
'',
'dashicons-welcome-widgets-menus',
40
);
Luego registro mis tipos de publicaciones y me aseguro de que usen
'show_in_menu' => 'practice-directory',
Esto funciona y los tipos de publicaciones personalizadas se muestran en mi menú personalizado.
Pero una taxonomía personalizada no acepta una cadena para la misma propiedad solo verdadera o falsa.
'show_in_menu' => 'false',
Entonces, para agregarlo, debe crear una página de submenú
add_submenu_page(
'practice-directory',
'Doctors',
'Doctors',
'edit_posts',
'edit-tags.php?taxonomy=doctor',
false
);
Que es una forma ‘hackeada’ de hacerlo.
¿Hay otra manera? Sin modificar el núcleo de WordPress ¿Podría sobrescribir la función register_taxonomy para poder aceptar una cadena para ‘show_in_menu’ y seguir la funcionalidad de register_post_type?
captura de pantalla solicitada
Marimacho
La única forma que encontré es crear un submenú como lo hiciste y establecer el menú activo cuando estamos en la página de taxonomía:
crea tu menú de administración:
add_menu_page('Page title', 'Menu title', 'read', 'menu_slug', false, 'dashicons-welcome-widgets-menus', 25);
agregue un tipo de publicación personalizada si es necesario:
register_post_type('your_cpt_name', array(
...
'show_in_menu' => 'menu_slug',//your previously created menu slug
...
));
agregue su taxonomía personalizada:
register_taxonomy('your_taxonomy_name', 'your_cpt_name', $args);
agregue su taxo submenú:
add_submenu_page('menu_slug', 'Page Title', 'Menu Title', 'custom_post_capability', 'edit-tags.php?taxonomy=your_taxonomy_name&post_type=your_cpt_name', false);
agregue filtro para resaltar el menú cuando esté activo:
add_filter('parent_file', 'highlightTaxoSubMenu');
function highlightTaxoSubMenu($parent_file){
global $submenu_file, $current_screen, $pagenow;
if ($current_screen->post_type == 'your_cpt_name') {
if ( $pagenow == 'edit-tags.php' && $current_screen->taxonomy == 'your_taxonomy_name' ) {
$submenu_file="edit-tags.php?taxonomy=your_taxonomy_name&post_type=your_cpt_name";
}
$parent_file="menu_slug";//your parent menu slug
}
return $parent_file;
}
Editar: cuando su CPT se coloca como submenú en la administración, los roles de usuario personalizados no pueden crear una nueva publicación para este CPT si no tienen la capacidad de ‘editar publicaciones’ (incluso si tienen su capacidad de edición de cpt). Una solución alternativa es agregar un enlace ‘crear nueva publicación’ para esta publicación personalizada en su submenú
add_submenu_page('menu_slug', 'Add', 'Add', 'custom_post_capability', 'post-new.php?post_type=your_cpt_name', false);
Vaya al menú apariencia-> y busque la opción de la parte superior de la pantalla, haga clic en eso y encuentre lo que necesita mostrar en el menú
¿podría mostrarme una captura de pantalla de sus necesidades?
– desarrollador
6 de febrero de 2018 a las 4:20
@developerme no estoy seguro de cómo obtener una captura de pantalla de lo que estoy buscando. Si comprende lo que hace add_menu_page y luego la propiedad show_in_menu de un tipo de publicación personalizada, sabrá que estoy agregando un elemento de menú al menú de administración de WordPress. Luego, para agregar una taxonomía personalizada a ese mismo menú, no se puede hacer con la misma propiedad que está disponible al registrar una taxonomía personalizada porque solo acepta verdadero o falso, y no una cadena.
– Orlando P.
7 febrero 2018 a las 20:19