¿Quieres mostrar el tipo de publicación personalizado como un submenú dentro del menú de edición de publicaciones? Si bien probablemente exista un plugin para esto, hemos creado un fragmento de código rápido que puedes usar para mostrar el menú del tipo de publicación personalizado como submenú en WordPress.
Instrucciones:
Todo lo que tienes que hacer es agregar este código al archivo functions.php de tu tema o a un plugin específico del sitio:
function nacin_register_slideshows_post_type() {
register_post_type( 'slideshow', array(
'labels' => array(
'name' => 'Slideshows',
'singular_name' => 'Slideshow',
),
'public' => true,
'show_ui' => true,
'show_in_menu' => 'edit.php',
'supports' => array( 'title' ,'thumbnail', 'editor' ),
) );
}
add_action( 'init', 'nacin_register_slideshows_post_type' );
Nota: Si es la primera vez que agregas fragmentos de código en WordPress, consulta nuestra guía sobre cómo agregar fragmentos de código correctamente en WordPress, para que no rompas accidentalmente tu sitio.
Si te gustó este fragmento de código, considera echar un vistazo a nuestros otros artículos en el sitio como: 43 mejores temas de fotografía para WordPress y cómo crear un formulario de contacto en WordPress.
Registro el tipo de publicación con 'agregar nuevo elemento', pero 'agregar nuevo elemento' no aparece en el submenú, ¿alguna sugerencia para mi problema?
Bien. Intentando llevar esto un paso más allá y adjuntar el tipo de publicación a una página de menú personalizada. Hasta ahora, nada... ¿alguna idea?
Tu pregunta es antigua, pero supongo que esto podría ser útil para alguien más.
Pasé mucho tiempo revisando el código fuente de WP intentando hacer lo
mismo: tengo un menú personalizado creado usando add_menu_page(). Tiene un puñado
de elementos de submenú. Tengo un tipo de publicación personalizado relacionado con este menú y
quería que los enlaces de agregar/listar para ese tipo de publicación fueran elementos de submenú.
Respuesta corta: No hay una manera fácil de hacerlo en WP. La forma en que
genera los menús y la interfaz de usuario de tipos de publicación personalizados significa que no hay una llamada simple que
puedas hacer.
Solución:
1. Registra tu tipo de publicación con las
siguientes opciones:
‘show_ui’ => true,
‘show_in_menu’ => false
En
este ejemplo, mi tipo de publicación personalizado es acct_notes
2. En el archivo functions.php de tu tema o en tu archivo de plugin, agrega una acción a
admin_menu:
add_action(‘admin_menu’,
‘modify_admin_menus’);
3. Agrega submenu_pages para los dos enlaces de la interfaz de usuario de publicaciones — listar publicaciones, crear nueva
publicación.
El primer parámetro es el slug del menú al que lo estás agregando. El segundo
es el nombre que aparecerá en la página. El tercero es cómo se mostrará el enlace.
El cuarto es la capacidad requerida para acceder a él. El quinto es el slug
para este elemento del menú. Y el último es la función que generará la salida. En
este caso, no la usaremos, así que podemos pasar NULL.
add_submenu_page(‘members’, ‘Notas de Cuenta’, ‘Notas de Cuenta’,
‘manage-options’, ‘view_account_notes’, NULL);
4. El último paso es la función que cambiará esos enlaces de submenú para que
vayan a las páginas de interfaz de usuario de publicaciones correctas.
function modify_admin_menus(){
global $submenu;
if(array_key_exists(‘members’, $submenu)){
foreach($submenu[‘members’] as $key => $value){
$k =
array_search(‘view_account_notes’, $value);
if($k){
$submenu[‘members’][$key][$k] =
(current_user_can($submenu[‘members’][$key][1]))?
admin_url(‘/edit.php?post_type=acct_notes’):”;
}
$l = array_search(‘new_account_note’, $value);
if($l){
$submenu[‘members’][$key][$l] =
(current_user_can($submenu[‘members’][$key][1]))?
admin_url(‘/post-new.php?post_type=dojo_acct_notes’) : ”;}
}
}
Lo que está sucediendo en la función es que está comprobando la matriz global $submenu
para ver si nuestro elemento de menú de nivel superior (members) existe; podría no
existir si el usuario no tiene permiso para acceder a él. Si lo tiene, entonces
busca si ese elemento de menú de nivel superior tiene una página de submenú con el
slug "view_account_notes", lo que asignamos en add_submenu_page. Finalmente,
comprueba el permiso que asignamos en add_submenu_page y si el usuario actual
tiene ese permiso, genera el nuevo enlace. Si no lo tiene, elimina el enlace por
completo.
Hacemos esa misma comprobación dos veces: una para el enlace para listar nuestro
tipo de publicación personalizado y otra para el enlace para agregar un nuevo
tipo de publicación personalizado.
Sería mucho preferible tener esta funcionalidad incorporada, pero esto le
permitirá agregar interfaces de usuario de tipos de publicación personalizados a
cualquier menú que desee.
Menú Instalaciones incluye tipos de publicación: – Reuniones; – Bodas; – SPA
Muchas gracias por la ayuda.
buen truco. gracias.
de nada, cuando quieras,
No es un truco, es una característica