Кто-нибудь знает, как отключить эту функцию, чтобы мета-блоки не могли быть перемещены?
У меня была такая же проблема, и Google привел меня сюда. К сожалению, ни один из этих ответов не помог, но я в конце концов понял ответ, и это довольно просто!
admin_enqueue_scripts
, и все работало нормально.Отключите функцию сортировки, поместив это в этот файл JavaScript:
jQuery(document).ready( function($) {
$('.meta-box-sortables').sortable({
disabled: true
});
$('.postbox .hndle').css('cursor', 'pointer');
});
По сути, это просто отключает jQuery UI Sortable , который поддерживает функцию перетаскивания метабокса ( postbox.dev.js: 64 ). Это также переключает курсор на METABOX ручку стандартного указателя мыши вместо перемещения курсора (идея любезно brasofilo ниже).
Надеюсь это поможет!
Изменить: Я должен добавить, что, вероятно, стоит следовать некоторым другим советам здесь и отключить сохранение порядка метабокса. Это предотвратит путаницу в случае непредвиденного повторного включения чего-либо.
Второе редактирование: в интересах будущих поколений (и будущих поисковиков Google) это исправление было протестировано на WordPress 3.3.1. Я не могу говорить с другими версиями!
$('.postbox .hndle').css('cursor','default');
:::: Re: 2-е редактирование , вам придется постоянно обновлять Ответ в обозримом будущем: PСамый быстрый способ - отключить JS для этой функции. Но я думаю, будет лучше, если вы также отмените регистрацию стиля для поля и начнете настраивать собственный стиль без эффектов для мыши и значка открытия / закрытия в мета-блоках.
источник
admin_init
только в какой-то конкретный тип сообщения?Я ответил на аналогичный вопрос с предложением разрешить перетаскивание, но отключить сохранение нового заказа на стороне сервера. Это может дать вам больше контроля и быть более ориентированным на будущее, поскольку JavaScript может быстро измениться, но протокол для взаимодействия с сервером может остаться более устойчивым. В этом примере отключено все перетаскивание, но вы можете развернуть его, чтобы проверить ваш конкретный блок или мета-страницу.
источник
check_ajax_referer
это действие, а не фильтр. Вы должны простоdie()
завершить выполнение скрипта, а не возвращать ничего. Я исправлю свой код.WordPress Javascript идентифицирует перетаскиваемые метабоксы по заголовку h3 с классом «hndle». Достаточно просто отключить их, ссылаясь на рассматриваемый метабокс (если вы создаете собственные метабоксы, вам будет назначен его идентификатор) и отключаете любые классы hndle, удаляя имя класса или переименовывая его. В моем случае у меня есть несколько типов разделителей, которые я пометил с помощью .hndle h3, но вряд ли кто-то еще поступил бы так. Таким образом, вы можете сделать то, что я сделал ниже, или вы можете использовать .find ('. Hndle'). Attr ('class', '') .... или что-то подобное. Это будет в файле .js, который вы поставили в очередь в вашем файле functions.php (будь то в папке тем или папки плагинов). Постановка в очередь будет вызвана admin_print_scripts,
источник
Я бы также добавил этот Javascript Hack:
... и этот CSS:
Я использовал этот код для использования мета-блоков, но без функций перетаскивания и открытия / закрытия.
источник
.postbox:hover .handlediv { display:none; }
CSS, чтобы скрыть .handledivЯ заметил, что этот вопрос остается без ответа, поскольку спрашивающий не выбирает правильный ответ.
Ян привел рабочий пример остановки переупорядочения метабокса, сохраняемого через Ajax, в то время как другие дали предложения, касающиеся JS.
Насколько я понимаю, все, что вы хотите сделать, это отключить перетаскивание, не более того. Для этого вам понадобятся две вещи, во-первых, функция для перехвата действия сохранения ajax, а во-вторых, вам также нужно остановить перетаскивание JS без потери функциональности где-либо еще на странице, а также сделать это выборочно для тип сообщения или определенный метабокс.
Используя функцию Jans и некоторые jQuery, мы можем сделать это без полного уничтожения других функций, создаваемых сценарием почтового ящика, например ...
Код PHP для файла функций темы или файла плагина
Раскомментируйте 1 из соответствующих строк, чтобы заставить enqueue работать.
jQuery / JS для файла Javascript, упомянутого в приведенном выше
Очень простой jquery, который удаляет сортируемый класс metabox из применимых элементов, это предотвращает перетаскивание.
Как вы можете видеть, я добавил в пример 1 тип сообщения, чтобы добавить код, в данном случае книга. Однако вы упомянули о желании также иметь возможность отключить его для определенных метабоксов.
Это может быть сделано, есть только несколько небольших побочных эффектов, один из которых заключается в том, что, удаляя классы из заданных метабоксов для предотвращения перетаскивания, вы также предотвращаете работу функции переключения (т. Е. Функциональность переключения заголовка метабокса).
Тем не менее, это может быть сделано ...
Во-первых, вы бы обновили
disable_metabox_dragging
функцию до ..Опять же, отмечая, что вам нужно раскомментировать соответствующую
wp_enqueue_script
строку.Массив в вызове localize определяет, какие метабоксы отключить, пустой элемент с ключом 0 существует специально, потому что функция скрипта локализации удаляет все индексы с 0 ключами в массиве.
Во-вторых, новый файл JS, на который есть ссылка в приведенной выше функции настройки очереди.
Единственное, что вам нужно сделать, это определить ID для метабоксов, которые вы хотите скрыть, и передать их в массив, который устанавливает отключенные метабоксы (в
wp_localize_scipt
вызове).В целом, я не думаю, что выборочное отключение метабоксов лишено недостатков, просто нет поддержки для переконфигурирования сортируемого действия init в WordPress, поэтому отключение сортировки метабоксов для каждого элемента будет в лучшем случае хакерским (мой код выше доказательство тому). В идеале, здесь нужно действие в WordPress для подключения сортируемого инициата, но в настоящее время он жестко запрограммирован в javascript почтового ящика (который делает больше, чем просто настройка сортируемого).
В любом случае, я надеюсь, что это помогло решить первоначальный вопрос.
источник
Чтобы добавить ко всем предыдущим ответам, если вы также хотите запретить WordPress загружать пользовательские позиции, нужно выполнить следующее (замените
post
на любой тип записи):источник
Просто нашел простой способ, надеюсь, новый искатель поможет с этим. Предполагая, что вы можете добавить файл CSS в стиле администратора, я использую только CSS для этого и извините за мой плохой английский.
Надеюсь, это поможет.
источник