Quero desabilitar isso apenas para um Tipo de postagem, pois realmente não importa se houver outro usuário editando (a área principal de edição de conteúdo é Ajaxified e não administradores podem ver apenas isso).
Eu olhei para as funções principais, mas não consegui encontrar um ponto de entrada. Pela função wp_set_post_lock
, acho que teria que interceptar o arquivo get_post_meta
, mas existe uma maneira oficial de fazer isso?
E há um segundo bloqueio que não parece ser afetado pelo filtro wp_check_post_lock_window
( como mostrado por birgire , aqui em uma resposta). Eu tentei remove_filter( 'heartbeat_received', 'wp_refresh_post_lock', 10, 3 );
em vários pontos, mas continua batendo sem respeitar remove_filter
.
wp-admin
heartbeat-api
brasofilo
fonte
fonte
post_lock
no entanto.Respostas:
Como complemento à resposta @birgire …
Constatações
register_post_type()
permite registrar um suporte ao tipo de postagem, o que também pode ser feito posteriormenteadd_post_type_support()
. E isso pode ser verificado até mais tarde usando o todo poderosopost_type_supports( $cpt, $feat )
.Um mini plug-in geral que adiciona um novo recurso
Agora, o seguinte (mu-) plugin verifica um novo tipo de suporte ao tipo de postagem que desativa o recurso de bloqueio de postagem. É nomeado
disabled_post_lock
.Um plug-in por CPT
Em seguida, podemos adicionar facilmente mini plugins para desativar o suporte ao tipo de postagem para plugins próprios ou de terceiros (economizando um pouco de largura de banda e tamanho do banco de dados na tabela de usuários):
Assim que o segundo plug-in é ativado, nosso tipo de publicação de cerveja não tem mais bloqueio de publicação. Isso deve funcionar bem e é facilmente revertível através da tela de administração de plug-ins.
Desativando a API de pulsação
Estendendo o plug-in para desativar também a API do hearbeat:
fonte
admin-ajax.php
peça (atualização Q e adição de A)?wp.heartbeat.start();
seu JavaScript.post_type_supports
de lidar com isso para cada tipo de pós personalizado, eu gostaria de poder lhe dar mais upvotes ;-)Para remover a janela pop - up de edição-bloqueio , você pode tentar:
Não tenho certeza se esse é o caminho a seguir, mas verifiquei a fonte
wp_check_post_lock()
e temos as seguintes linhas:então a idéia é mudar
$time_window
para que aif
condição sejafalse
.Atualizar:
Para aplicar isso na
edit.php
tela, com o tipo de postagem personalizada,beer
por exemplo:E então podemos adicionar:
para removê-lo também para a
post.php
tela.Mais escavação ...
A função
_admin_notice_post_locked()
é definida logo abaixo dawp_set_post_lock()
função. Ele contém estas linhas:então também se pode tentar o
show_post_locked_dialog
filtro:fonte
__return_false()
como a primeira verificação para$time
resumir apenas comobool TRUE
?$time
afalse
então eu fui para$time_window
em vez disso ...A combinação final que acabei de usar é
mas se alguém tiver outra opinião, eu adoraria ouvir, pois não estou realmente entendendo toda a imagem dos filtros disponíveis.
fonte
get_current_screen()->post_type
lugar. Aqui está um bom plug-in chamado Informações do administrador atual para ajudá-lo a recuperar essas informações.DOING_AJAX
cheque ... E pelo que entendi, o Ajax não temglobal $current_screen
(retornado porget_current_screen()
).wp_is_autosave()
certeza se isso é responsável por alguma dessas ações.add_filter( 'show_post_locked_dialog', '__return_false' );
, a partir da função_admin_notice_post_locked()
, é de alguma ajuda?wp_ajax_heartbeat()
(wp-admin / includes / ajax-actions.php) usando a cadeiaload-$hook
->get_current_something()
. . . . . Além disso, existem 3 ganchos em que função, mas eu não vou ser capaz de parar a batida de usá-los (e eles têm$screen_id
, o que corresponde ao tipo post.Aqui está a solução final que funciona para mim. :
fonte