Festlegen der Positionen und Sichtbarkeit von Admin-Bearbeitungsfeldern und Metaboxen für ALLE Benutzer und Administratoren

10

Mein WP 3.3-Setup umfasst mehrere Beitragstypen und angepasste Bearbeitungsfelder mit dem Plugin "Erweiterte benutzerdefinierte Felder" (das viele Metaboxen erstellt) und anderen Plugins wie dem SEO-Metabox-Bedienfeld, den Posts2Posts-Verbindungen von Scribu und mehr.

Das Problem ist, dass die Darstellungsreihenfolge dieser Bedienfelder oft recht zufällig ist (auch wenn Adavanced Custom Fields eine bestimmte Reihenfolge bietet, dies funktioniert jedoch nicht immer, da andere Plugins diese nicht haben und ich möglicherweise die Metabox ändern möchte Positionen nach Pfostentypen).

Jetzt ermöglicht Wordpress jedem Administrator / Benutzer mit den entsprechenden Rechten, die Metaboxen in Bearbeitungsfeldern nach seinen Wünschen anzuordnen. Allerdings ... muss jeder Administrator seine eigenen arrangieren !! Gibt es nicht eine Möglichkeit, eine Standard- / Festbestellung vorzubereiten oder Superadmin oder insbesondere einen Administrator die Panel-Position für JEDEN festlegen zu lassen?

Ich habe mindestens 4 Administratoren und wenige Redakteure / Autoren ... es macht keinen Sinn, ihre Panels so einzurichten, dass sie sich mit JEDEM ihrer Konten anmelden ... es ist dumm und zeitaufwändig und verwirrend für nicht WordPress-versierte Benutzer .

Gibt es ein Plugin oder ein Code-Snippet, das meinem Fall helfen könnte?

Danke

unfulvio
quelle
Jemand hat vor 1 Jahr die gleichen Fragen in wp-Foren gestellt, sein Thema wurde ohne Antworten belassen, nicht gelöst und einige Administratoren haben den Thread wordpress.org/support/topic/…
unfulvio

Antworten:

7

Sie können die Standard-Meta-Boxen mit remove_meta_box entfernen und an einer anderen Position mit add_meta_box erneut hinzufügen:

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

Die obige Antwort stammt aus dem folgenden Thread: Wie ändere ich die Standardposition von WP-Meta-Boxen?

AKTUALISIEREN

Wenn die Hauptfrustration nur die Anzahl der verfügbaren Meta-Boxen ist und Sie nicht glauben, dass jeder Benutzer alle Boxen benötigt, können Sie sie mit dem folgenden Code, der der Datei functions.php hinzugefügt wurde, vor niedrigeren Benutzerrollen oder allen Rollen ausblenden. HINWEIS - Bei dieser Methode wird die Meta-Box einfach ausgeblendet und nicht deaktiviert oder entfernt.

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

Grundsätzlich müssen Sie nur die durch Komma getrennte Div-ID oder Klasse eingeben. Ich habe meine einfach dort gelassen, um zu zeigen, dass alle Arten von Meta-Boxen und Bereichen ausgeblendet werden können.

#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

(Ich habe die Beispiele in "Code" eingefügt, weil SE # verwendet, um eine Überschrift darzustellen.)

Ich dachte, ich würde dir das rauswerfen, weil ich wie du mit all den Meta-Boxen extrem frustriert war, aber letztendlich denke ich, dass es die schiere Anzahl unerwünschter Boxen war. Für einen "Autor" auf meiner Website ist es jetzt sehr rationalisiert: Titel, Inhalt, als Entwurf speichern, jetzt veröffentlichen oder veröffentlichen, Tags, Kategorien und vorgestellte Bilder ... Überhaupt keine Unordnung.

Travis Pflanz
quelle
Das löst mein Problem nicht. Ich möchte meine wysiwyg-Einstellungen auf alle Benutzer kopieren (also habe ich das Erscheinungsbild der Panels ein für alle Mal festgelegt). Grund: Einige Plugins fügen ihre eigenen Metaboxen hinzu. Außerdem möchte ich für verschiedene Beitragstypen die Metaboxen entsprechend platzieren. Add_meta_box hat nur normal / high / low ... mit vielen vielen Metaboxen, die nicht helfen. Erweiterte benutzerdefinierte Felder haben mindestens eine Bestellnummer, funktionieren jedoch bei Vorhandensein anderer Metaboxen nicht gut. Der beste Weg, dies zu tun, wäre wysiwyg ...
unfulvio
Verwenden und benötigen Sie alle zusätzlichen Meta-Boxen, die von Plugins erstellt wurden? Ich frage, weil für mich alle nicht benötigten Meta-Boxen mich immer frustrieren. Wenn dies tatsächlich Ihr Fall ist, habe ich darüber ein UPDATE erstellt. Wenn Sie einfach die Felder ausblenden, die für bestimmte Benutzerrollen nicht benötigt werden, kann Ihr Problem möglicherweise behoben werden.
Travis Pflanz
Warum entfernen Sie die Metaboxen nicht vom Benutzer, anstatt sie einfach mit dem Styling auszublenden?
Stephen Harris
Nicht alles, was ich entferne, ist eine Meta-Box, einige sind Teile von Meta-Boxen, also dachte ich, ich würde nur eine Funktion anstelle von zwei verwenden.
Travis Pflanz
Travis, danke, dass du mehr dafür ausgegeben hast. Die CSS-Lösung löst jedoch nicht das Problem des Verschiebens von Metaboxen (Ihre vorherige Lösung zum Filtern und Neupositionieren teilweise). Wie bereits erwähnt, enthält mein Setup viele benutzerdefinierte Beitragstypen mit speziellen Metaboxen, die ich erstellt habe und die vorhanden sein müssen. Es gibt tatsächlich sehr wenige, die ich verstecken möchte (aber sie werden für einige Administratoren nützlich sein, daher möchte ich sie nicht dauerhaft entfernen und das Verstecken durch CSS ist kein guter Schritt). Ich habe noch keine zufriedenstellende Lösung für dieses Problem gefunden. Trotzdem vielen Dank für die Mühe.
Unfulvio
1

Haben Sie sich das Adminimize- Plugin angesehen?

Sie können Meta-Boxen pro Benutzerrolle aktivieren / deaktivieren und die Position konfigurieren. Die Konfiguration dauert ein wenig und die Dokumentation ist anständig, wenn auch stellenweise fleckig, sollte aber in der Lage sein, mit dem umzugehen, was Sie beschreiben.

JCL1178
quelle
Mit diesem Plugin können Sie nicht "die Position konfigurieren", sondern nur die Sichtbarkeit. Es ist ein sehr schönes Plugin, tho ..
frnhr
Ich werde gestehen, dass ich mir das Plugin nicht so genau angesehen habe, aber wenn es eines manipulieren kann, kann es wahrscheinlich dazu gebracht werden, das andere über einige Code-Ergänzungen zu manipulieren. Für einen schönen Startpunkt.
JCL1178