¿Cómo cambiar la posición predeterminada de las cajas meta de WordPress?

7 nov 2011, 06:57:15
Vistas: 22.7K
Votos: 21

Me pregunto si hay alguna manera de cambiar la posición predeterminada de las cajas meta de WordPress, como "imagen destacada" para tipos de contenido personalizados sin tener que arrastrarlas manualmente.

Ejemplo: Ejemplo de posicionamiento de cajas meta en WordPress

1
Comentarios
Todas las respuestas a la pregunta 3
3
24

Puedes eliminar las meta cajas predeterminadas con remove_meta_box y volver a agregarlas en una posición diferente con add_meta_box:

add_action('do_meta_boxes', 'wpse33063_move_meta_box');

function wpse33063_move_meta_box(){
    remove_meta_box( 'postimagediv', 'post', 'side' );
    add_meta_box('postimagediv', __('Imagen destacada'), 'post_thumbnail_meta_box', 'post', 'normal', 'high');
}

Esto eliminará la meta caja de la columna lateral y la agregará a la columna principal. Cambia post en este ejemplo por el nombre de tu tipo de contenido personalizado.

7 nov 2011 08:12:06
Comentarios

Esto parece ideal, gracias de nuevo Milo, voy a intentarlo.

Mr.Brown Mr.Brown
7 nov 2011 16:53:40

@Milo: Si el add_meta_box() necesita un nombre de función $callback, ¿cómo puedo saber el nombre de la función que usa WordPress? Supongamos que quiero hacer lo mismo con el meta_box de la barra lateral 'Categorías' (#categorydiv)?

Mayeenul Islam Mayeenul Islam
1 jul 2013 11:26:10

@MayeenulIslam mira en el archivo /wp-admin/edit-form-advanced.php y verás donde WordPress añade todos los meta boxes principales y los callbacks y argumentos que utiliza. Para categorías es post_categories_meta_box.

Milo Milo
1 jul 2013 18:23:50
3

Yo también tuve problemas con esto. No encontré una forma limpia de redefinir el diseño/orden, especialmente porque los usuarios pueden cambiarlo cuando arrastran las cajas.

Prefiero hacer las cosas 'con' WordPress (generalmente vale la pena), en lugar de luchar contra él. La forma en que WordPress maneja esto es la siguiente:

WordPress almacena las posiciones arrastradas por usuario y por pantalla, usando varias claves de metadatos de usuario que varían según la página/pantalla.

Podrías agregar un action o filter para cada nuevo usuario y establecer la configuración como quieres que sea por defecto:
1) Primero arrastra y organiza la página como quieres que quede
2) Luego revisa en phpMyAdmin los metadatos de tu usuario (user-meta) para ver qué ha almacenado WordPress
3) Finalmente programa la acción para nuevos usuarios así: Si un usuario NO tiene esa configuración establecida (para no sobreescribir elecciones personales), puedes establecerla como deseas - usando el valor que obtuviste al configurarlo manualmente.

Para entender qué claves de metadatos (metakeys) buscar, mira estas capturas de pantalla: http://wpusersplugin.com/related-plugins/amr-user-templates/screenshots-for-user-templates/

(Al final desarrollé un plugin genérico que me permite como admin definir mi diseño preferido para todos los usuarios en todo tipo de páginas/pantallas. Luego ellos pueden modificarlo, por ejemplo a medida que ganan experiencia. Además no se rompe cuando WordPress hace cambios, ya que mi plugin solo obtiene los valores de plantilla del usuario, ni siquiera intenta establecer el valor de forma hardcodeada.)

7 nov 2011 08:00:15
Comentarios

Aunque me gusta la idea detrás de este enfoque, la solución de Milo parece mucho más rápida, así que voy a probar esa primero. Pero gracias por tomarte el tiempo de informarme sobre este método también. Definitivamente consideraré usar esta forma en el futuro. He votado tu comentario.

Mr.Brown Mr.Brown
7 nov 2011 16:55:08

El plugin propuesto por Anmari es un plugin comercial de pago... y no parece haber sido actualizado desde agosto del año pasado. ¿Sigues manteniendo ese plugin? Si no es así, ¿has considerado compartirlo en Github?

unfulvio unfulvio
12 abr 2012 11:14:15

Gracias @anmari por compartir este enfoque, realmente útil.

Maor Barazany Maor Barazany
7 dic 2013 00:53:40
0

Si deseas ordenar tus meta boxes de manera precisa, puedes usar este plugin: https://wordpress.org/plugins/post-meta-box-order/

Funciona sobre la opción meta-box-order_post del usuario (tabla wp_usermeta).

Nota 1: esta técnica se puede aplicar a cualquier CPT personalizado cambiando el final del flag: meta-box-order_[TU_CPT]

Nota 2: no olvides cambiar el hash en el código del plugin para aplicar tu nuevo orden a todos los usuarios existentes.

27 sept 2016 14:28:49