Ustawianie pozycji paneli edycji i metaboksów oraz widoczności dla WSZYSTKICH użytkowników i administratorów

10

Moja konfiguracja WP 3.3 obejmuje kilka typów postów i niestandardowe panele edycji z wtyczką Advanced Custom Fields (która tworzy wiele metaboksów) i innymi wtyczkami, takimi jak panel metabox SEO, połączenia Posts2Posts Scribu i wiele innych.

Problem polega na tym, że kolejność wyświetlania tych paneli jest często dość losowa (nawet jeśli Adavanced Custom Fields oferuje jakieś uporządkowanie, ale nie zawsze działa, ponieważ inne wtyczki go nie mają, a ponadto mogę zmienić metabox pozycje według typów stanowisk).

Teraz Wordpress pozwala każdemu administratorowi / użytkownikowi z odpowiednimi uprawnieniami rozmieszczać metaboksy w panelach edycyjnych tak, jak chce. Jednak ... każdy administrator musi sam zorganizować !! Czy nie ma sposobu na przygotowanie domyślnego / stałego zamówienia lub pozwolenie superadminowi lub jednemu administratorowi w szczególności na ustawienie pozycji paneli dla KAŻDEGO?

Mam co najmniej 4 administratorów i kilku redaktorów / autorów ... nie ma sensu konfigurować ich paneli, logując się na KAŻDYCH kontach ... to głupie i czasochłonne oraz mylące dla nie znających WordPressa użytkowników .

Czy jest jakaś wtyczka lub fragment kodu, który mógłby pomóc w mojej sprawie?

Dziękuję Ci

unfulvio
źródło
ktoś zadał te same pytania na forach wp 1 rok temu, jego temat nie otrzymał odpowiedzi, nie został rozwiązany, a niektórzy administratorzy zamknęli wątek wordpress.org/support/topic/…
unfulvio 12.12.

Odpowiedzi:

7

Możesz usunąć domyślne pola meta za pomocą remove_meta_box i ponownie dodać je w innej pozycji za pomocą 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');
}

Powyższa odpowiedź pochodzi z następującego wątku: Jak zmienić domyślną pozycję metadanych WP?

AKTUALIZACJA

Jeśli główną frustracją jest ilość dostępnych metaboksów i nie uważasz, że każdy użytkownik potrzebuje wszystkich pól, możesz ukryć je przed niższymi rolami użytkownika lub wszystkimi rolami, używając następującego kodu dodanego do pliku functions.php. UWAGA - Ta metoda po prostu ukrywa meta-box i nie dezaktywuje go ani nie usuwa.

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

Zasadniczo wystarczy wprowadzić identyfikator div lub klasę oddzielone przecinkiem. Właśnie zostawiłem tam swoją, aby pokazać, że można ukryć wszelkiego rodzaju pola i obszary.

#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

(Przykłady umieszczam w „kodzie”, ponieważ SE używa # do reprezentowania nagłówka)

Myślałem, że ci to wyrzucę, ponieważ, podobnie jak ty, byłem bardzo sfrustrowany wszystkimi meta boxami, ale ostatecznie myślę, że była to sama liczba niechcianych pudełek. Dla „autora” na mojej stronie jest teraz bardzo usprawniony: Tytuł, Treść, zapisz jako wersję roboczą, opublikuj teraz lub zaplanuj opublikowanie, tagi, kategorie i polecany obraz ... W ogóle nie ma bałaganu.

Travis Pflanz
źródło
To nie rozwiązuje mojego problemu, chciałbym to zrobić, kopiując moje ustawienia wysiwyg do wszystkich użytkowników (więc ustawiam wygląd paneli raz na zawsze); powód: niektóre wtyczki dodają własne metaboksy; Ponadto dla różnych typów postów chcę odpowiednio umieścić metaboksy. Add_meta_box ma tylko normalne / wysokie / niskie ... z wieloma wieloma metaboksami, które nie pomagają. Zaawansowane pola niestandardowe mają co najmniej numer porządkowy, ale nie działają dobrze w obecności innych metaboksów. Najlepszym sposobem na to byłoby wysiwyg ...
unfulvio 12.04. O
Czy używasz i potrzebujesz wszystkich dodatkowych metaboksów utworzonych przez wtyczki? Pytam, ponieważ dla mnie wszystkie niepotrzebne meta-pudełka zawsze mnie frustrują. Jeśli tak jest w twoim przypadku, zrobiłem UPDATE powyżej, że może jeśli po prostu ukryjesz pola, które nie są potrzebne do niektórych ról użytkowników, twój problem może zostać wyeliminowany ... Z pewnością mi się udało!
Travis Pflanz,
Dlaczego nie usuwasz metaboksów przez użytkownika, a nie tylko ukrywasz je za pomocą stylizacji?
Stephen Harris
Nie wszystko, co usuwam, to meta-box, niektóre są częściami meta-boxów, więc pomyślałem, że użyję tylko jednej funkcji, a nie dwóch.
Travis Pflanz,
Travis, dziękuję, że wydałeś na to więcej. Jednak rozwiązanie CSS nie rozwiązuje problemu przenoszenia metaboksów (poprzednie rozwiązanie filtrowania i repozycjonowania częściowo rozwiązuje). Jak wspomniałem wcześniej, moja konfiguracja ma wiele niestandardowych typów postów ze specjalnymi metaboksami, które stworzyłem i muszą tam być. W rzeczywistości bardzo niewielu chcę ukryć (ale przydadzą się niektórym administratorom, więc nie chcę ich usuwać na stałe, a ukrywanie się za pomocą CSS nie jest dobrym posunięciem). Muszę jeszcze znaleźć zadowalające rozwiązanie tego problemu. W każdym razie dziękuję za wysiłek.
unfulvio
1

Czy sprawdziłeś wtyczkę Adminimize ?

Pozwala aktywować / dezaktywować metaboksy dla każdej roli użytkownika, a także konfigurować pozycję. Konfiguracja zajmuje trochę czasu, a dokumentacja jest przyzwoita, choć miejscami niejednolita, ale powinna poradzić sobie z tym, co opisujesz.

JCL1178
źródło
Ta wtyczka nie pozwala na „konfigurację pozycji”, a jedynie widoczność. To bardzo ładna wtyczka, chociaż ...
od
Przyznaję się, że nie przyjrzałem się dokładnie wtyczce, ale jeśli można nią manipulować, prawdopodobnie można ją zmanipulować za pomocą pewnych dodatków do kodu. Stanowi dobry punkt startowy.
JCL1178