Définition des positions et de la visibilité des panneaux d'édition et des métaboxes pour TOUS les utilisateurs et administrateurs


10

Ma configuration WP 3.3 implique plusieurs types de publication et panneaux d'édition personnalisés avec le plugin Advanced Custom Fields (qui crée de nombreuses métaboxes) et d'autres plugins tels que le panneau SEO metabox, les connexions Posts2Posts de Scribu et plus encore.

Le problème est que l'ordre d'apparition de ces panneaux est souvent assez aléatoire (même si Adavanced Custom Fields propose une sorte de classement, mais cela ne fonctionne pas toujours, car d'autres plugins ne l'ont pas et de plus je pourrais vouloir changer de métabox positions selon les types de poste).

Désormais, Wordpress permet à chaque administrateur / utilisateur disposant des droits appropriés d'organiser les métaboxes dans les panneaux d'édition comme il le souhaite. Cependant ... chaque administrateur doit organiser les leurs !! N'y a-t-il pas un moyen de préparer une commande par défaut / fixe ou de laisser le superadmin ou un administrateur en particulier définir la position des panneaux pour TOUT LE MONDE?

J'ai au moins 4 administrateurs et quelques éditeurs / auteurs ... cela n'a pas de sens que je doive configurer leurs panneaux de connexion avec CHAQUE de leurs comptes ... c'est stupide et prend du temps, et déroutant pour les utilisateurs non avertis de wordpress .

Existe-t-il un plugin ou un extrait de code qui pourrait aider mon cas?

Merci


quelqu'un a demandé les mêmes quetsions sur les forums wp il y a 1 an, son sujet est resté sans réponse, pas résolu et certains administrateurs ont fermé le fil wordpress.org/support/topic/…
unfulvio

Réponses:


7

Vous pouvez supprimer les métadonnées par défaut avec remove_meta_box et les rajouter dans une position différente avec 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 réponse ci-dessus provient du fil suivant: Comment changer la position par défaut des méta-boîtes WP?

METTRE À JOUR

Si la principale frustration est purement la quantité de métadonnées disponibles et que vous ne pensez pas que chaque utilisateur a besoin de toutes les boîtes, vous pouvez les masquer des rôles d'utilisateur inférieurs ou de tous les rôles à l'aide du code suivant ajouté au fichier functions.php. REMARQUE - Cette méthode masque simplement la méta-boîte et ne les désactive ni ne les supprime.

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

Fondamentalement, il vous suffit d'entrer le div id ou la classe séparés par une virgule. Je viens de laisser le mien là-bas pour montrer que toutes sortes de métadonnées et de zones peuvent être cachées.

#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

(Je mets les exemples en "code" car SE utilise # pour représenter un en-tête)

Je pensais que je vous en parlerais parce que, comme vous, je suis extrêmement frustré par toutes les méta-boîtes, mais en fin de compte, je pense que c'est le nombre de boîtes indésirables. Pour un "auteur" sur mon site Web, il est maintenant très rationalisé: titre, contenu, enregistrer en tant que brouillon, publier maintenant ou planifier pour être publié, tags, catégories et image en vedette ... Aucun encombrement du tout.


Cela ne résout pas mon problème, j'aimerais faire cela en copiant mes paramètres wysiwyg à tous les utilisateurs (j'ai donc défini l'apparence des panneaux une fois pour toutes); raison: certains plugins ajoutent leurs propres métaboxes; aussi, pour différents types de messages, je veux placer les métaboxes en conséquence. Add_meta_box n'a que normal / high / low ... avec beaucoup de métaboxes qui n'aident pas. Les champs personnalisés avancés ont au moins un numéro de commande, mais cela ne fonctionne pas bien en présence d'autres métaboxes. La meilleure façon de le faire serait wysiwyg ...
unfulvio

Utilisez-vous et avez-vous besoin de toutes les méta-boîtes supplémentaires créées par les plugins? Je demande parce que, pour moi, toutes les méta-boîtes inutiles sont ce qui me frustre toujours. Si c'est en fait votre cas, j'ai fait une MISE À JOUR au-dessus de cela, peut-être que si vous cachez simplement les cases qui ne sont pas nécessaires pour certains rôles d'utilisateur, votre problème pourrait être éliminé ...
Travis Pflanz

Pourquoi ne supprimez-vous pas les métaboxes par utilisateur plutôt que de simplement les masquer avec un style?
Stephen Harris

Tout ce que je supprime n'est pas une méta-boîte, certains sont des parties de méta-boîtes, donc je me suis dit que je n'utiliserais qu'une fonction, plutôt que deux.
Travis Pflanz

Travis, merci d'avoir dépensé plus de temps à ce sujet. Cependant, la solution CSS ne résout pas le problème du déplacement des métaboxes (votre solution précédente de filtrage et de repositionnement le fait partiellement). Comme je l'ai mentionné plus tôt, ma configuration a de nombreux types de messages personnalisés avec des métaboxes spéciaux que j'ai créés et ils doivent être là. Il y a en fait très peu de choses que je veux cacher (mais elles seront utiles à certains administrateurs, donc je ne veux pas les supprimer définitivement et se cacher par CSS n'est pas une bonne chose). Je n'ai pas encore trouvé de solution satisfaisante à ce problème. Merci quand même pour l'effort.
unfulvio

1

Avez-vous regardé le plugin Adminimize ?

Il vous permet d'activer / désactiver les métadonnées par rôle d'utilisateur et également de configurer la position. Il faut un peu de temps pour le configurer et la documentation est décente, quoique irrégulière par endroits mais elle devrait être capable de gérer ce que vous décrivez.


Ce plugin ne pas vous permettre de « configurer la position », seule la visibilité. C'est un très bon plugin, mais ...
frnhr

J'avoue ne pas avoir regardé de si près le plugin mais s'il peut en manipuler un, il peut probablement être fait pour manipuler l'autre via quelques ajouts de code. Fait un joli point de lancement.
JCL1178
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.