Crear una página de administración personalizada para custom post type + taxonomías + metas

15 abr 2012, 20:59:20
Vistas: 26.2K
Votos: 11

Estoy desarrollando un plugin que se basa en tipos de contenido personalizados (custom post types), una nueva taxonomía y algunos campos personalizados.

Todos estos datos serán privados (no consultables ni buscables).

Me gustaría proporcionar una página de administración al usuario para agregar y editar estos datos de una manera más amigable.

Por ejemplo, el tipo de contenido personalizado solo tendrá un título y el campo de extracto, una taxonomía y los campos personalizados.

Sé cómo agregar meta boxes a un tipo de contenido personalizado, pero esto no es suficiente para mí.

Me gustaría crear una interfaz HTML completamente personalizada que se encargue de agregar/guardar/eliminar el tipo de contenido personalizado y manejar la taxonomía y los metadatos.

Para ser claro, ya sé cómo escribir un plugin normal y manejar las opciones del plugin.

No sé cómo, con este plugin, puedo:

  • Agregar un nuevo elemento de menú en el menú de administración de WordPress
  • En este elemento del menú, manejar, con una interfaz personalizada, el tipo de contenido personalizado

¿Existe algún tutorial por ahí que pueda ayudarme a lograr esto?

7
Comentarios

Se agradecería una razón para el voto negativo

Andrea Sciamanna Andrea Sciamanna
15 abr 2012 23:13:33

echa un vistazo a http://wordpress.org/extend/plugins/wp-user-frontend/

Bainternet Bainternet
16 abr 2012 09:43:18

Nainternet, parece que no fui muy claro con mi pregunta. La actualizaré adecuadamente.

Andrea Sciamanna Andrea Sciamanna
16 abr 2012 10:24:57

Sugerí ese plugin porque puedes usarlo para crear, actualizar y eliminar CPT, términos de taxonomía y campos personalizados desde el front-end, que es básicamente lo que quieres. Solo revisa su código.

Bainternet Bainternet
16 abr 2012 10:52:42

Bainternet, entiendo tu punto, pero como el mío ya es un plugin, no quiero que los usuarios se vean obligados a instalar otro plugin para que el mío funcione. Necesito una solución que pueda implementar dentro de mi plugin. En realidad lo que necesito es solo alguna guía que me ayude a obtener este resultado.

Andrea Sciamanna Andrea Sciamanna
16 abr 2012 14:20:32

Una vez más, la idea era que revisaras el código del plugin para ver cómo está hecho.

Bainternet Bainternet
16 abr 2012 20:42:47

Una vez más, Bainternet, estoy buscando un "cómo hacerlo", si es que existe uno. Hay muchos plugins que hacen lo que necesito, pero cada uno lo hace de manera diferente. Prefiero seguir un patrón, un estándar o algo similar, como ya hago (en la medida de lo posible) al escribir un plugin o un tema.

Andrea Sciamanna Andrea Sciamanna
16 abr 2012 21:10:53
Mostrar los 2 comentarios restantes
Todas las respuestas a la pregunta 3
0

Así es como se puede hacer:

add_action('admin_menu' , 'add_to_cpt_menu'); 

function add_to_cpt_menu() {
    add_submenu_page('edit.php?post_type=name_of_post_type', 'Administración de Custom Post Type', 'Configuraciones Personalizadas', 'edit_posts', basename(__FILE__), 'cpt_menu_function');
}   
1 mar 2016 00:24:22
1

Necesitarás comenzar a leer sobre la API de configuración y opciones, y luego integrar tus CPT (Tipos de contenido personalizados) y Taxonomías en ella.

Aquí tienes un punto de partida:

16 abr 2012 00:34:22
Comentarios
0

Añadir menús y submenús como:

add_action('admin_menu', 'custom_plugin_menu');
function custom_plugin_menu() {
    $page_title = 'Título del Menú Principal';
    $menu_title = 'Título del Menú Principal';
    $capability = 'manage_options';
    $menu_slug = 'parent_menu_slug';
    $function = 'whatever_for_main_page_function';
    $icon_url = 'dashicons-admin-generic';
    $position = 4;
    add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position);

    $parent_slug = 'parent_menu_slug';
    $page_title = 'Título de la Página del Submenú';
    $menu_title = 'Título de la Página del Submenú';
    $capability = 'manage_options';
    $menu_slug = 'edit-tags.php?taxonomy=your_taxonomy_name&post_type=custom_post_type_name';
    $function = null;
    $position = null;
    add_submenu_page($parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function, $position);
}

finalmente:

add_filter('parent_file', 'menu_highlight');    
function menu_highlight($parent_file) {
    global $plugin_page, $submenu_file, $post_type, $taxonomy;
    if ('custom_post_type_name' == $post_type) {
        if ($taxonomy == 'your_taxonomy_name') {
            $plugin_page = 'edit-tags.php?taxonomy= your_taxonomy_name&post_type= custom_post_type_name'; // el slug del submenú 
            $submenu_file = 'edit-tags.php?taxonomy= your_taxonomy_name&post_type= custom_post_type_name';    // el slug del submenú
        }
    } 
    return $parent_file;
}

Espero haber puesto todo correctamente. Anida cualquier otro if dentro de la verificación de taxonomía y añade lo mismo para otros tipos de contenido.

8 feb 2021 02:10:15