Как изменить позицию по умолчанию для мета-боксов 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)?
Mayeenul Islam
Я тоже сталкивался с этой проблемой. Честно говоря, я не нашел чистого способа переопределить макет/порядок - особенно учитывая, что пользователи могут изменять его, перетаскивая блоки.
Я предпочитаю работать "вместе" с WordPress (это обычно окупается), а не бороться с ним. WordPress делает это следующим образом:
WordPress сохраняет позиции перетащенных блоков для каждого пользователя на каждом экране, используя множество мета-ключей пользователя, которые зависят от конкретной страницы/экрана.
Вы можете добавить action или filter для каждого нового пользователя, чтобы установить настройки пользователя так, как вам нужно по умолчанию.
1) Перетащите и расположите страницу, которую хотите изменить, затем
2) посмотрите в phpmyadmin метаданные вашего пользователя по вашему ID и посмотрите, что WordPress сохранил там.
3) затем напишите код для действия нового пользователя следующим образом:
если у пользователя еще нет этой настройки (чтобы не перезаписать его личный выбор), вы можете установить ее так, как вам нужно - со значением, которое вы нашли при ручной настройке.
Чтобы понять, какие именно мета-ключи пользователя вам нужны, посмотрите эти скриншоты: http://wpusersplugin.com/related-plugins/amr-user-templates/screenshots-for-user-templates/
(В итоге я написал универсальный плагин, чтобы как администратор мог определить предпочтительный макет для всех пользователей для различных страниц/экранов. Пользователи могли затем изменять его, например, по мере освоения системы. Кроме того, это не сломается при изменениях в WordPress, так как мой плагин просто получает шаблонные значения пользователя, а не пытается установить жестко закодированное значение.)
Хотя мне нравится идея этого подхода, решение Мило кажется гораздо быстрее, так что я попробую именно его. Но спасибо, что уделили время и рассказали мне об этом методе. Обязательно рассмотрю его использование в будущем. Плюсую ваш комментарий.
Mr.Brown
Плагин, предложенный Anmari, является платным коммерческим плагином... и похоже, что он не обновлялся с августа прошлого года. Вы все еще поддерживаете этот плагин? Если нет, не думали ли вы выложить его на Github?
unfulvio
Если вам нужно точно упорядочить метабоксы, вы можете использовать этот плагин: https://wordpress.org/plugins/post-meta-box-order/
Он работает с опцией meta-box-order_post в таблице wp_usermeta.
Примечание 1: эту технику можно применить к любому пользовательскому типу записей (CPT), изменив окончание флага: meta-box-order_[ВАШ_CPT]
Примечание 2: не забудьте изменить хэш в коде плагина, чтобы применить новый порядок ко всем существующим пользователям.