Как изменить позицию по умолчанию для мета-боксов WordPress?
Интересует, есть ли способ изменить позицию по умолчанию для мета-боксов WordPress, таких как "изображение записи" для пользовательских типов записей, без необходимости перетаскивать их вручную?
Пример:

Вы можете удалить стандартные метабоксы с помощью remove_meta_box
и добавить их снова в другом месте с помощью 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', __('Миниатюра записи'), 'post_thumbnail_meta_box', 'post', 'normal', 'high');
}
Это удалит метабокс из боковой колонки и добавит его в основную колонку. Замените post
в этом примере на название вашего пользовательского типа записи.

@Milo: Разве для add_meta_box()
не требуется имя функции $callback
, откуда мне знать название функции, используемой WordPress? Например, если я хочу сделать то же самое для метабокса сайдбара 'Категории' (#categorydiv)?

Я тоже сталкивался с этой проблемой. Честно говоря, я не нашел чистого способа переопределить макет/порядок - особенно учитывая, что пользователи могут изменять его, перетаскивая блоки.
Я предпочитаю работать "вместе" с WordPress (это обычно окупается), а не бороться с ним. WordPress делает это следующим образом:
WordPress сохраняет позиции перетащенных блоков для каждого пользователя на каждом экране, используя множество мета-ключей пользователя, которые зависят от конкретной страницы/экрана.
Вы можете добавить action или filter для каждого нового пользователя, чтобы установить настройки пользователя так, как вам нужно по умолчанию.
1) Перетащите и расположите страницу, которую хотите изменить, затем
2) посмотрите в phpmyadmin метаданные вашего пользователя по вашему ID и посмотрите, что WordPress сохранил там.
3) затем напишите код для действия нового пользователя следующим образом:
если у пользователя еще нет этой настройки (чтобы не перезаписать его личный выбор), вы можете установить ее так, как вам нужно - со значением, которое вы нашли при ручной настройке.
Чтобы понять, какие именно мета-ключи пользователя вам нужны, посмотрите эти скриншоты: http://wpusersplugin.com/related-plugins/amr-user-templates/screenshots-for-user-templates/
(В итоге я написал универсальный плагин, чтобы как администратор мог определить предпочтительный макет для всех пользователей для различных страниц/экранов. Пользователи могли затем изменять его, например, по мере освоения системы. Кроме того, это не сломается при изменениях в WordPress, так как мой плагин просто получает шаблонные значения пользователя, а не пытается установить жестко закодированное значение.)

Хотя мне нравится идея этого подхода, решение Мило кажется гораздо быстрее, так что я попробую именно его. Но спасибо, что уделили время и рассказали мне об этом методе. Обязательно рассмотрю его использование в будущем. Плюсую ваш комментарий.

Плагин, предложенный Anmari, является платным коммерческим плагином... и похоже, что он не обновлялся с августа прошлого года. Вы все еще поддерживаете этот плагин? Если нет, не думали ли вы выложить его на Github?

Если вам нужно точно упорядочить метабоксы, вы можете использовать этот плагин: https://wordpress.org/plugins/post-meta-box-order/
Он работает с опцией meta-box-order_post в таблице wp_usermeta.
Примечание 1: эту технику можно применить к любому пользовательскому типу записей (CPT), изменив окончание флага: meta-box-order_[ВАШ_CPT]
Примечание 2: не забудьте изменить хэш в коде плагина, чтобы применить новый порядок ко всем существующим пользователям.
