Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Widgets personalizados en el dashboard

Estas en el tema de Widgets personalizados en el dashboard en el foro de WordPress en Foros del Web. Muy buenas, estoy con widgets del dashboard, y bueno, es muy sencillo crearlos pero no tanto colocarlos donde quieres. He leído unos trescientos tutoriales para ...
  #1 (permalink)  
Antiguo 21/04/2012, 16:02
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 14 años, 9 meses
Puntos: 429
Widgets personalizados en el dashboard

Muy buenas, estoy con widgets del dashboard, y bueno, es muy sencillo crearlos pero no tanto colocarlos donde quieres.

He leído unos trescientos tutoriales para eso (eso sin exagerar, jajaja) y consigo ubicar el primero en el lugar que quiero pero no el segundo, haga lo que haga me aparece siempre en la columna izquierda.

Después de probar 1001 combinaciones sin éxito esta es la que tengo ahora:


Código PHP:
Ver original
  1. global $wp_meta_boxes;
  2.  
  3.        //este widget esta donde debe estar, el primero a la izquierda
  4.     $widget_columna_izda = $wp_meta_boxes['dashboard']['normal']['core']['dashboard_widget_columna_izda'];
  5.     unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_widget_columna_izda']);
  6.     $wp_meta_boxes['dashboard']['side']['core']['dashboard_columna_izda'] = $widget_columna_izda;
  7.  
  8.        //este widget no logro ponerlo donde quiero: el primero a la derecha
  9.     $widget_columna_dcha = $wp_meta_boxes['dashboard']['side']['core']['dashboard_widget_columna_dcha'];
  10.     unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_widget_columna_dcha']);
  11.     $wp_meta_boxes['dashboard']['side']['core']['dashboard_widget_columna_dcha'] = $widget_columna_dcha;
  12.  
  13.  
  14. function dashboard_columna_izda(){
  15.      echo '
  16.     ';
  17. }
  18.  
  19. function dashboard_columna_dcha(){
  20.      echo '
  21.     ';
  22. }
  23. function register_widgets(){
  24.      wp_add_dashboard_widget( 'dashboard_widget_columna_izda', 'Columna izquierda', 'dashboard_widget_columna_izda');
  25.      wp_add_dashboard_widget( 'dashboard_widget_columna_dcha', 'Columna derecha', 'dashboard_widget_columna_dcha');
  26.  
  27. }
  28. add_action('wp_dashboard_setup', 'register_widgets' );

¿Alguna idea? la referencia del codex anda por aquí, pero tampoco me ha servido mucho
__________________
Mi blog personal | Mi G+
  #2 (permalink)  
Antiguo 23/04/2012, 09:43
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Respuesta: Widgets personalizados en el dashboard

Yo nunca he trabajado con estas meta boxes... además de que mi última madrugada fue algo extendida...

Pero me llama la atención de que estés usando un unset allí, osea:
Código PHP:
Ver original
  1. //este widget esta donde debe estar, el primero a la izquierda
  2. $widget_columna_izda = $wp_meta_boxes['dashboard']['normal']['core']['dashboard_widget_columna_izda'];
  3. // Aquí en el unset también metes a dashboard_widget_columna_izda
  4. unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_widget_columna_izda']);
  5. $wp_meta_boxes['dashboard']['side']['core']['dashboard_columna_izda'] = $widget_columna_izda;
¿O es que estoy hablando de lo que no sé ?

Bss!
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #3 (permalink)  
Antiguo 23/04/2012, 10:49
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 14 años, 9 meses
Puntos: 429
Respuesta: Widgets personalizados en el dashboard

Gracias rogertm, ese unset es para forzar que el widget salga el primero (arriba del todo), parece un poco loco pero el código es del codex http://codex.wordpress.org/Dashboard...get_to_the_top y además funciona.

El problema es la columna de la derecha.... no encuentro ninguna documentación y he probado mil combinaciones, por eso en esta última intenté repetir el truco pero no sirve
__________________
Mi blog personal | Mi G+
  #4 (permalink)  
Antiguo 23/04/2012, 15:22
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Widgets personalizados en el dashboard

Buenas,

Peco de atrevido porque de WP ni idea, pero me parece que es un tema de orden, creo que debería ser algo así:

Código PHP:
Ver original
  1. function dashboard_widget_left_column_callback()
  2. {
  3.     echo __FUNCTION__;
  4. }
  5.  
  6.  
  7. function dashboard_widget_right_column_callback()
  8. {
  9.     echo __FUNCTION__;
  10. }
  11.  
  12. function dashboard_add_widget_left_column()
  13. {  
  14.     wp_add_dashboard_widget(
  15.         'dashboard_widget_left_column',
  16.         __('Left Column'),
  17.         'dashboard_widget_left_column_callback'
  18.     );                         
  19. }
  20.  
  21. function dashboard_add_widget_right_column()
  22. {      
  23.     wp_add_dashboard_widget(
  24.         'dashboard_widget_right_column',
  25.         __('Right Column'),
  26.         'dashboard_widget_right_column_callback'
  27.     );             
  28.     global $wp_meta_boxes;     
  29.     $widget_right_column = $wp_meta_boxes['dashboard']['normal']['core']['dashboard_widget_right_column'];
  30.     unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_widget_right_column']);
  31.     $wp_meta_boxes['dashboard']['side']['core']['dashboard_widget_right_column'] = $widget_right_column;       
  32. }
  33.  
  34. function register_widgets()
  35. {
  36.     dashboard_add_widget_left_column();
  37.     dashboard_add_widget_right_column();       
  38. }
  39.  
  40. add_action('wp_dashboard_setup', 'register_widgets');

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 24/04/2012, 06:13
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 14 años, 9 meses
Puntos: 429
Respuesta: Widgets personalizados en el dashboard

Muchas gracias masterpuppet, el código funciona a la perfección, aunque he de decir que añade los widgets debajo del resto y no los coloca en primer lugar, que es lo que ando buscando.

No obstante, me ha sido muy útil porque, aunque añadir widgets por debajo ya sabía hacerlo, me va a permitir probar nuevas combinaciones, así que tendré que seguir investigando ¡muchas gracias!
__________________
Mi blog personal | Mi G+
  #6 (permalink)  
Antiguo 24/04/2012, 08:01
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Widgets personalizados en el dashboard

Si comprendes el funcionamiento te debería resultar sencillo ordenar los widgets a tu gusto, por lo que entiendo se divide en secciones(normal, side, column3, column4) y dentro de cada sección hay prioridades(high, sorted, core, default, low), por defecto la prioridad es core, con asignar un widget a una prioridad mas alta es suficiente para que aparezca arriba, de hecho la prioridad sorted te permite ordenarlos como quieras ;).

Siguiendo con el ejemplo del thread si quieres que el widget dashboard_widget_right_column aparezca primero en la columna de la derecha podrías asignarlo a una prioridad mas alta dentro de esa sección, algo así:

Código PHP:
Ver original
  1. function dashboard_add_widget_right_column()
  2. {      
  3.     wp_add_dashboard_widget(
  4.         'dashboard_widget_right_column',
  5.         __('Right Column'),
  6.         'dashboard_widget_right_column_callback'
  7.     );             
  8.  
  9.     global $wp_meta_boxes;     
  10.    
  11.     $widget = $wp_meta_boxes['dashboard']['normal']['core']['dashboard_widget_right_column'];
  12.     unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_widget_right_column']);
  13.     //asignando a sorted, prioridad mas alta que core
  14.     $wp_meta_boxes['dashboard']['side']['sorted'][] = $widget;
  15. }

Siempre hay que "cachear" el item, hacer el unset y volver a asignarlo, esto es por un error de WP, la funcion wp_add_dashboard_widget debería aceptar por parámetro la prioridad, supongo que lo ajustaran en nuevas versiones.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 24/04/2012 a las 08:06
  #7 (permalink)  
Antiguo 25/04/2012, 16:21
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 14 años, 9 meses
Puntos: 429
Respuesta: Widgets personalizados en el dashboard

Muchas gracias, excelente código y respuesta. Me ha servido mucho tu ayuda.

Conocía los parámetros de orden, pero ese cacheo extraño, que en efecto el codex describe como error de WordPress, combinado con condicionales para eliminar otros widgets, según los roles de usuarios, etc. no me obedecían y me dejaron un poco... en fin... se ve que unos días estamos más obtusos que otros

¡Gracias!
__________________
Mi blog personal | Mi G+

Etiquetas: dashboard, personalizados, widgets
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:26.