¿Cómo cambiar la posición predeterminada de los meta cuadros de WP?

Respuestas:

22

Puede eliminar los meta cuadros predeterminados con remove_meta_box y volver a agregarlos 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', __('Featured Image'), 'post_thumbnail_meta_box', 'post', 'normal', 'high');
}

Esto lo eliminará de la columna lateral y lo agregará a la columna principal. cambie posten este ejemplo a cualquiera que sea su tipo de publicación personalizada.

Milo
fuente
Esto parece ideal, gracias de nuevo Milo, lo intentaré.
Mr.Brown
@Milo: Como si add_meta_box()necesita un $callbacknombre de función, ¿cómo puedo saber el nombre de la función utilizada por WordPress? Supongamos que si quiero hacer lo mismo para la barra lateral meta_box 'Categorías' (#categorydiv)?
Mayeenul Islam
55
@MayeenulIslam busque en el archivo /wp-admin/edit-form-advanced.phpy verá dónde WordPress agrega todos los meta cuadros principales y las devoluciones de llamada y argumentos que utiliza. por categorías lo es post_categories_meta_box.
Milo
5

Luché con esto también. Realmente no encontré una manera limpia de redefinir el diseño / orden, especialmente porque los usuarios pueden cambiarlo cuando / si arrastran los cuadros.

Me gusta hacer las cosas 'con' wordpress (generalmente vale la pena), criticar que chocar con él y la forma en que wordpress lo hace es la siguiente:

WordPress almacena las posiciones arrastradas por usuario por pantalla y hay un montón de teclas meta-usuario que usa dependiendo de la página / pantalla en la que se encuentre.

Por lo tanto, puede agregar una acción o filtro para cada nuevo usuario para establecer la configuración de usuario de la manera que desea que sea el valor predeterminado.
1) Arrastre y organice la página que desea afectar, luego 2) mire en phpmyadmin en su meta de usuario para su identificación y vea qué wp ha almacenado allí. 3) luego codifique la nueva acción del usuario de la siguiente manera si un usuario NO tiene esa configuración ya establecida (para evitar sobrescribir una elección personal), puede configurarla de la manera que desee, con el valor que encontró al configurarla manualmente.

Para tener una idea de las meta-teclas meta-usuario que está buscando, vea estas capturas de pantalla: http://wpusersplugin.com/related-plugins/amr-user-templates/screenshots-for-user-templates/

(Terminé escribiendo un complemento genérico para que, como administrador, pudiera definir mi diseño preferido para todos los usuarios para todo tipo de páginas / pantallas. Luego, podrían alterar eso, por ejemplo, a medida que se vuelven más competentes. Además, no se romperá cuando wp cambie El complemento cosas como yo solo obtiene los valores de usuario de la plantilla, ni siquiera intenta establecer el valor en un valor codificado).

anmari
fuente
1
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 intentarlo, pero gracias por tomarse el tiempo para informarme también sobre este enfoque. Definitivamente buscaré usarlo de esta manera más adelante. Hice su comentario.
Mr.Brown
3
El complemento propuesto por Anmari es un complemento comercial pago ... y no parece actualizado desde agosto del año pasado. ¿Sigues manteniendo ese complemento? Si no, ¿has considerado compartirlo en Github?
unfulvio
Gracias @anmari por compartir este enfoque, realmente útil.
Maor Barazany
0

Si desea ordenar con precisión sus meta cuadros, puede usar este complemento: https://wordpress.org/plugins/post-meta-box-order/

Se reproduce en el meta-box-order_post de la opción de usuario (tabla wp_usermeta).

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

Nota 2: no olvide cambiar el hash en el código del complemento para aplicar su nuevo pedido a todos los usuarios existentes.

rebe100x
fuente