Как изменить позицию по умолчанию для мета-боксов WordPress?

7 нояб. 2011 г., 06:57:15
Просмотры: 22.7K
Голосов: 21

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

Пример: Пример позиционирования мета-бокса в WordPress

1
Комментарии

Вы можете изменить порядок по умолчанию: http://wordpress.stackexchange.com/questions/41501/1-column-admin-screen-options-move-submitdiv-to-bottom

User User
20 июл. 2015 г. 16:57:18
Все ответы на вопрос 3
3
24

Вы можете удалить стандартные метабоксы с помощью 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 в этом примере на название вашего пользовательского типа записи.

7 нояб. 2011 г. 08:12:06
Комментарии

Это выглядит идеально, ещё раз спасибо, Мило, я попробую.

Mr.Brown Mr.Brown
7 нояб. 2011 г. 16:53:40

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

Mayeenul Islam Mayeenul Islam
1 июл. 2013 г. 11:26:10

@MayeenulIslam загляните в файл /wp-admin/edit-form-advanced.php и вы увидите, где WordPress добавляет все основные метабоксы, а также используемые callback-функции и аргументы. Для категорий это post_categories_meta_box.

Milo Milo
1 июл. 2013 г. 18:23:50
3

Я тоже сталкивался с этой проблемой. Честно говоря, я не нашел чистого способа переопределить макет/порядок - особенно учитывая, что пользователи могут изменять его, перетаскивая блоки.

Я предпочитаю работать "вместе" с WordPress (это обычно окупается), а не бороться с ним. WordPress делает это следующим образом:

WordPress сохраняет позиции перетащенных блоков для каждого пользователя на каждом экране, используя множество мета-ключей пользователя, которые зависят от конкретной страницы/экрана.

Вы можете добавить action или filter для каждого нового пользователя, чтобы установить настройки пользователя так, как вам нужно по умолчанию.
1) Перетащите и расположите страницу, которую хотите изменить, затем 2) посмотрите в phpmyadmin метаданные вашего пользователя по вашему ID и посмотрите, что WordPress сохранил там. 3) затем напишите код для действия нового пользователя следующим образом: если у пользователя еще нет этой настройки (чтобы не перезаписать его личный выбор), вы можете установить ее так, как вам нужно - со значением, которое вы нашли при ручной настройке.

Чтобы понять, какие именно мета-ключи пользователя вам нужны, посмотрите эти скриншоты: http://wpusersplugin.com/related-plugins/amr-user-templates/screenshots-for-user-templates/

(В итоге я написал универсальный плагин, чтобы как администратор мог определить предпочтительный макет для всех пользователей для различных страниц/экранов. Пользователи могли затем изменять его, например, по мере освоения системы. Кроме того, это не сломается при изменениях в WordPress, так как мой плагин просто получает шаблонные значения пользователя, а не пытается установить жестко закодированное значение.)

7 нояб. 2011 г. 08:00:15
Комментарии

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

Mr.Brown Mr.Brown
7 нояб. 2011 г. 16:55:08

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

unfulvio unfulvio
12 апр. 2012 г. 11:14:15

Спасибо @anmari за этот метод, очень полезно.

Maor Barazany Maor Barazany
7 дек. 2013 г. 00:53:40
0

Если вам нужно точно упорядочить метабоксы, вы можете использовать этот плагин: https://wordpress.org/plugins/post-meta-box-order/

Он работает с опцией meta-box-order_post в таблице wp_usermeta.

Примечание 1: эту технику можно применить к любому пользовательскому типу записей (CPT), изменив окончание флага: meta-box-order_[ВАШ_CPT]

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

27 сент. 2016 г. 14:28:49