Establecer posiciones y visibilidad de paneles de edición de administrador y metaboxes para TODOS los usuarios y administradores

10

Mi configuración de WP 3.3 implica varios tipos de publicaciones y paneles de edición personalizados con el complemento de Campos personalizados avanzados (que crea muchos metaboxes) y otros complementos como el panel SEO metabox, las conexiones Posts2Posts de Scribu y más.

El problema es que el orden de aparición de estos paneles a menudo es bastante aleatorio (incluso si Adavanced Custom Fields ofrece algún tipo de orden, pero no siempre funciona, ya que otros complementos no lo tienen y, además, es posible que desee cambiar metabox puestos de acuerdo a los tipos de correos).

Ahora, Wordpress permite a cada administrador / usuario con los derechos adecuados organizar los metaboxes en los paneles de edición de la forma que desee. Sin embargo ... ¡cada administrador tiene que organizar los suyos! ¿No hay una manera de preparar un pedido predeterminado / fijo o dejar que superadmin o un administrador en particular establezcan la posición de los paneles para TODOS?

Tengo al menos 4 administradores y pocos editores / autores ... no tiene sentido que tenga que configurar sus paneles para iniciar sesión con CADA una de sus cuentas ... es estúpido y requiere mucho tiempo, y es confuso para los usuarios no expertos en WordPress .

¿Hay algún complemento o fragmento de código que pueda ayudar a mi caso?

gracias

unfulvio
fuente
alguien hizo las mismas preguntas en los foros de wp hace 1 año, su tema se quedó sin respuestas, no se resolvió y algún administrador cerró el hilo wordpress.org/support/topic/…
unfulvio

Respuestas:

7

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');
}

La respuesta anterior es del siguiente hilo: ¿Cómo cambiar la posición predeterminada de los meta cuadros de WP?

ACTUALIZAR

Si la frustración principal es puramente la cantidad de meta cuadros disponibles, y no cree que cada usuario necesite todos los cuadros, puede ocultarlos de roles de usuario inferiores o de todos los roles utilizando el siguiente código agregado al archivo functions.php. NOTA: este método simplemente oculta el cuadro meta y no los desactiva ni los elimina.

//Hide Post Page Options from all except Administrator
if (!current_user_can('administrator')){
function hide_post_page_options() {
global $post;
$hide_post_options = "<style type=\"text/css\"> #wptotwitter_div, wpseo_meta, #al2fb_meta, #misc-publishing-actions .misc-pub-section label, #misc-publishing-actions .misc-pub-section #post-status-display, #misc-publishing-actions .misc-pub-section .edit-post-status, #visibility.misc-pub-section, .al2fb_post_submit, #slugdiv, #edit-slug-box, #screen-options-link-wrap { display: none; }</style>";
print($hide_post_options);
}
add_action( 'admin_head', 'hide_post_page_options'  );
}

//Hide Post Page Options from ALL users
function hide_all_post_page_options() {
global $post;
$hide_all_post_options = "<style type=\"text/css\"> #taxonomy-category li.hide-if-no-js, #commentstatusdiv, #wypiekacz_sectionid, #postexcerpt, #trackbacksdiv, #postcustom, #yarpp_relatedposts { display: none !important; }</style>";
print($hide_all_post_options);
}
add_action( 'admin_head', 'hide_all_post_page_options'  );

Básicamente, solo necesita ingresar la identificación div o la clase separadas por una coma. Acabo de dejar el mío allí para mostrar que se pueden ocultar todo tipo de metacajas y áreas.

#wptotwitter_div - WP to Twitter plugin
#wpseo_meta - Wordpress SEO by Yoastplugin
#al2fb_meta, .al2fb_post_submit - Add Link to Facebookplugin
#misc-publishing-actions .misc-pub-section label, #misc-publishing-actions .misc-pub-section #post-status-display, #misc-publishing-actions .misc-pub-section .edit-post-status, #visibility.misc-pub-section - Default Wordpress Publish Status and Visibility
#slugdiv, #edit-slug-box - The post slug
#screen-options-link-wrap - The "Screen Options" tab at the top of the page
#taxonomy-category li.hide-if-no-js - The "Most Used" categories tab
#commentstatusdiv - The comments on the post
#wypiekacz_sectionid - Wypiekacz plugin
#postexcerpt - Post excerpt
#trackbacksdiv - Trackbacks
#postcustom - Custom post fields
#yarpp_relatedposts - Yet Another Related Posts Plugin

(Puse los ejemplos en "código" porque SE usa # para representar un encabezado)

Pensé en tirar esto porque, como tú, me sentí extremadamente frustrado con todas las cajas meta, pero finalmente creo que fue la gran cantidad de cajas no deseadas. Para un "autor" en mi sitio web, ahora está muy simplificado: Título, Contenido, guardar como borrador, publicar ahora o programar para ser publicado, etiquetas, categorías e imagen destacada ... Sin desorden.

Travis Pflanz
fuente
Eso no resuelve mi problema, me gustaría hacer esto copiando mi configuración de wysiwyg a todos los usuarios (así que configuré la apariencia de los paneles de una vez por todas); razón: algunos complementos agregan sus propios metaboxes; Además, para diferentes tipos de publicaciones, quiero colocar los metaboxes en consecuencia. Add_meta_box solo tiene normal / high / low ... con muchos metaboxes que no ayudan. Los campos personalizados avanzados al menos tienen un número de pedido, pero no funcionan bien en presencia de otros metaboxes. La mejor manera de hacer esto sería wysiwyg ...
unfulvio
¿Utiliza y necesita todos los meta cuadros adicionales creados por complementos? Pregunto porque, para mí, todos los meta cuadros innecesarios es lo que siempre me frustra. Si ese es su caso, he hecho una ACTUALIZACIÓN arriba que tal vez si simplemente oculta las casillas que no son necesarias para ciertos roles de usuario, su problema podría eliminarse ... ¡Lo hice por mí!
Travis Pflanz
¿Por qué no eliminas los metaboxes por usuario en lugar de simplemente ocultarlos con estilo?
Stephen Harris
No todo lo que elimino es una caja meta, algunas son partes de cajas meta, así que pensé que usaría una función, en lugar de dos.
Travis Pflanz
Travis, gracias por gastar más en esto. Sin embargo, la solución CSS no resuelve el problema de mover metaboxes (su solución anterior de filtrado y reposicionamiento sí lo hace). Como mencioné anteriormente, mi configuración tiene muchos tipos de publicaciones personalizadas con metaboxes especiales que hice y tienen que estar allí. En realidad, hay muy pocos que quiero ocultar (pero serán útiles para algunos administradores, por lo que no quiero eliminarlos de forma permanente y ocultarlos mediante CSS no es un buen movimiento). Todavía tengo que encontrar una solución satisfactoria para este problema. Gracias de todos modos por el esfuerzo.
unfulvio
1

¿Has mirado en el complemento Administrar ?

Le permite activar / desactivar meta cuadros por rol de usuario y también configurar la posición. Se tarda un poco en configurarlo y la documentación es decente, aunque irregular en algunos lugares, pero debería ser capaz de manejar lo que está describiendo.

JCL1178
fuente
Ese complemento no le permite "configurar la posición", solo la visibilidad. Es un plugin muy agradable, aunque ...
Viernes
Confesaré que no he mirado tan de cerca el complemento, pero si puede manipular uno, probablemente se pueda hacer que manipule el otro a través de algunas adiciones de código. Es un buen punto de partida.
JCL1178