Quando chiamo switch_to_blog()
con un ID blog, non so se quel blog esiste davvero. La funzione ritorna sempre TRUE
.
Caso di prova:
switch_to_blog( PHP_INT_MAX );
$post = get_post( 1 );
restore_current_blog();
Ciò comporterà errori del database che sono esposti all'utente. Come posso impedirlo?
Caso d'uso del mondo reale
Sono stato lo sviluppatore principale di Multilingual Press . Quando un utente traduce un post, ottiene una schermata come questa:
Ora può succedere quanto segue:
- Salva il post con successo e continua a tradurre il post.
- Un altro utente, un amministratore di rete, elimina il blog tedesco mentre sta scrivendo.
- Colpisce di nuovo il salvataggio e ottiene errori del database.
Voglio evitare quello scenario. Come posso verificare rapidamente se esiste il blog di destinazione? Chiamo switch_to_blog()
molto spesso in più classi diverse, quindi deve essere veloce.
get_post()
è solo una lettura. Potrebbe esserci una lunga pausa tra l'ultimo salvataggio e la successiva ricarica della schermata di modifica.
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()
, ma aiuta solo con cache persistente, non l'impostazione predefinita di WP sulla pagina. Ad ogni modo, per me non è davvero chiaro dove si desidera controllare l'esistenza del blog: quando qualcuno elimina un blog o quando qualcuno cerca di scrivere il post tradotto che punta a un blog diverso (alimentando lo stesso contenuto in un'altra lingua)?
$wpdb->blogid;
e il ganciowp_insert_post_data
?