Quando ligo switch_to_blog()
com um ID de blog, não sei se esse blog realmente existe. A função retorna sempre TRUE
.
Caso de teste:
switch_to_blog( PHP_INT_MAX );
$post = get_post( 1 );
restore_current_blog();
Isso resultará em erros de banco de dados expostos ao usuário. Como posso evitar isso?
Caso de uso no mundo real
Fui o desenvolvedor principal da Multilingual Press . Quando um usuário traduz uma postagem, ela recebe uma tela como esta:
Agora pode acontecer o seguinte:
- Ela salva a postagem com sucesso e continua traduzindo a postagem.
- Outro usuário, um administrador de rede, exclui o blog alemão enquanto ela está escrevendo.
- Ela pressiona salvar novamente e obtém erros no banco de dados.
Eu quero evitar esse cenário. Como posso verificar rapidamente se o blog de destino existe? Eu ligo switch_to_blog()
muito frequentemente em várias classes diferentes, por isso tem que ser rápido.
get_post()
é apenas uma leitura. Pode haver uma longa pausa entre a última gravação e a próxima tela de edição recarregada.
SELECT blog_id FROM {$wpdb->blogs} WHERE site_id = %d AND public = '1' AND archived = '0' AND spam = '0' AND deleted = '0'
wp_cache_switch_to_blog()
, mas isso só ajuda com o cache persistente, não o padrão na página WP. De qualquer forma, para mim não está realmente claro onde você deseja verificar a existência do blog: quando alguém exclui um blog ou quando alguém tenta escrever a postagem traduzida que aponta para um blog diferente (ativando o mesmo conteúdo em outro idioma)?
$wpdb->blogid;
e o ganchowp_insert_post_data
?