Я хочу отключить это только для одного типа сообщения, так как не имеет значения, редактирует ли его другой пользователь (основная область редактирования контента - Ajaxified, и не администраторы могут видеть это только).
Я посмотрел на основные функции, но не смог найти точку входа. Из функции wp_set_post_lock
я предполагаю, что мне придется перехватить get_post_meta
, но есть ли официальный способ сделать это?
И есть вторая блокировка , которая, кажется, не затронута фильтром wp_check_post_lock_window
( как показано birgire , здесь в Ответе). Я пробовал remove_filter( 'heartbeat_received', 'wp_refresh_post_lock', 10, 3 );
в разных моментах, но он продолжает биться, не уважая remove_filter
.
wp-admin
heartbeat-api
brasofilo
источник
источник
post_lock
таки было бы неплохо узнать правильный крючок .Ответы:
В дополнение к ответу @birgire ...
Результаты
register_post_type()
позволяет зарегистрировать поддержку типа записи, что также может быть сделано позже при использованииadd_post_type_support()
. И это может быть проверено даже позже, используя все сильныеpost_type_supports( $cpt, $feat )
.Общий мини-плагин, который добавляет новую функцию
Теперь следующий (mu-) плагин проверяет новый тип поддержки сообщений, который отключает функцию блокировки сообщений. Это называется
disabled_post_lock
.Один плагин на CPT
Затем мы можем легко добавить мини-плагины, чтобы отключить поддержку пост-типов для наших собственных или сторонних плагинов (сохраняя нам некоторую пропускную способность и размер БД в пользовательской мета-таблице):
Как только второй плагин активирован, у нашего типа пивного поста больше нет пост-блокировки. Это должно работать хорошо и легко обратимо через экран администрирования плагинов.
Отключение API пульса
Расширение плагина, чтобы отключить интерфейс beatbeat также:
источник
admin-ajax.php
частью (Q обновлено и A добавлено)?wp.heartbeat.start();
в своем JavaScript.post_type_supports
для обработки этого для каждого пользовательского типа сообщения, я хотел бы дать вам больше голосов ;-)Чтобы удалить всплывающее окно редактирования блокировки , вы можете попробовать:
Я не уверен, если это путь, но я проверил источник
wp_check_post_lock()
и там у нас есть эти строки:так что идея состоит в том, чтобы измениться,
$time_window
чтобыif
условие былоfalse
.Обновить:
Чтобы применить это на
edit.php
экране, например, с пользовательским типом записиbeer
:И тогда мы можем добавить:
чтобы убрать его и для
post.php
экрана.Больше копать ...
Функция
_admin_notice_post_locked()
будет определена чуть нижеwp_set_post_lock()
функции. Он содержит эти строки:так что можно также попробовать
show_post_locked_dialog
фильтр:источник
__return_false()
вместо этого в качестве первой проверки$time
просто итоги в видеbool TRUE
?$time
наfalse
так что я пошел$time_window
вместо этого ...Последняя комбинация, которую я закончил, это
но если у кого-то есть другой вариант, я бы хотел услышать, потому что я не совсем понимаю всю картину доступных фильтров.
источник
get_current_screen()->post_type
вместо этого. Вот хороший плагин под названием Current Admin Info, который поможет вам получить такую информацию.DOING_AJAX
проверку ... И, насколько я понимаю, у Ajax нетglobal $current_screen
(возвращеноget_current_screen()
).wp_is_autosave()
не уверен, что это связано с каким-либо из этих действий.add_filter( 'show_post_locked_dialog', '__return_false' );
, из функции_admin_notice_post_locked()
, какая-нибудь помощь?wp_ajax_heartbeat()
(wp-admin / includes / ajax-actions.php), используя цепочкуload-$hook
->get_current_something()
. , , , , Кроме того, в этой функции есть 3 хука, но я не могу остановить удар, используя их (и они имеют$screen_id
, что соответствует типу поста.Вот окончательное решение, которое работает для меня. :
источник