Jak zmienić domyślną pozycję metaboksów WP?

Odpowiedzi:

22

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

Spowoduje to usunięcie go z kolumny bocznej i dodanie do kolumny głównej. postw tym przykładzie zmień na dowolny niestandardowy typ wpisu.

Milo
źródło
To wydaje się idealne, jeszcze raz dziękuję, Milo. Spróbuję.
Mr.Brown,
@Milo: Jakbym add_meta_box()potrzebował $callbacknazwy funkcji, skąd mam znać nazwę funkcji używanej przez WordPress? Załóżmy, że jeśli chcę zrobić to samo z paskiem bocznym meta_box „Kategorie” (#categorydiv)?
Mayeenul Islam
5
@MayeenulIslam zajrzyj do pliku, /wp-admin/edit-form-advanced.phpa zobaczysz, gdzie WordPress dodaje wszystkie podstawowe pola meta oraz wywołania zwrotne i argumenty, których używa. dla kategorii jest post_categories_meta_box.
Milo
5

Walczyłem też z tym. Naprawdę nie znalazłem czystego sposobu na przedefiniowanie układu / kolejności - zwłaszcza, że ​​użytkownicy mogą go zmienić, kiedy / jeśli przeciągną pola.

Lubię robić rzeczy „za pomocą” wordpressa (zwykle się to opłaca), rathe niż zderzać się z nim, a sposób, w jaki to robi, jest następujący:

wordpress przechowuje przeciągnięte pozycje na użytkownika na ekran i jest cała masa meta-klawiszy użytkownika, których używa w zależności od strony / ekranu, na którym jest uruchomiona.

Możesz więc dodać akcję lub filtr dla każdego nowego użytkownika, aby ustawić ustawienia użytkownika tak, jak chcesz, aby były domyślne.
1) Przeciągnij i ułóż stronę, na którą chcesz wpłynąć, a następnie 2) poszukaj w phpmyadmin swojej meta użytkownika swojego identyfikatora i zobacz, co WP tam zapisało. 3) następnie zakoduj akcję nowego użytkownika w następujący sposób, jeśli użytkownik NIE ma już tego ustawienia (aby uniknąć zastąpienia osobistego wyboru), możesz ustawić go tak, jak chcesz - z wartością znalezioną po ręcznym ustawieniu.

Aby poznać pomysł meta-mety użytkownika, którego szukasz, zobacz te zrzuty ekranu: http://wpusersplugin.com/related-plugins/amr-user-templates/screenshots-for-user-templates/

(Skończyło się na napisaniu ogólnej wtyczki, aby jako administrator mogłem zdefiniować preferowany układ dla wszystkich użytkowników dla wszystkich rodzajów stron / ekranów. Następnie mogliby to zmienić, np. Gdy staną się bardziej biegli. Nie zmieni się również, gdy zmieni się wp rzeczy, ponieważ wtyczka ja po prostu pobiera wartości użytkownika szablonu, nawet nie próbuje ustawić wartości na wartość zakodowaną na stałe).

anmari
źródło
1
Chociaż podoba mi się pomysł takiego podejścia, rozwiązanie Milo wydaje się znacznie szybsze, więc zamiast tego dam temu szansę, ale dziękuję za poświęcenie czasu na poinformowanie mnie również o tym podejściu. Zdecyduję się na użycie tego w późniejszym terminie. Dodałem twój komentarz.
Mr.Brown,
3
Wtyczka zaproponowana przez Anmari jest płatną wtyczką komercyjną ... i nie wygląda na zaktualizowaną od sierpnia ubiegłego roku. Nadal utrzymujesz tę wtyczkę? Jeśli nie, czy zastanawiałeś się nad udostępnieniem go na Github?
unfulvio
Dzięki @anmari za podzielenie się tym podejściem, bardzo pomocne.
Maor Barazany,
0

Jeśli chcesz dokładnie zamówić swoje skrzynki meta, możesz użyć tej wtyczki: https://wordpress.org/plugins/post-meta-box-order/

Odgrywa na meta-box-order_post opcji użytkownika (tabela wp_usermeta).

Uwaga 1: tę technikę można zastosować do dowolnego niestandardowego CPT, zmieniając koniec flagi: meta-box-order_ [YOUR_CPT]

Uwaga 2: nie zapomnij zmienić skrótu w kodzie wtyczki, aby zastosować nowe zamówienie do wszystkich istniejących użytkowników.

rebe100x
źródło