Ketika saya menelepon switch_to_blog()
dengan id blog, saya tidak tahu apakah blog itu benar-benar ada. Fungsi selalu kembali TRUE
.
Kasus cobaan:
switch_to_blog( PHP_INT_MAX );
$post = get_post( 1 );
restore_current_blog();
Ini akan menghasilkan kesalahan basis data yang diekspos kepada pengguna. Bagaimana saya bisa mencegahnya?
Kasus penggunaan dunia nyata
Saya adalah pengembang utama Multilingual Press . Ketika seorang pengguna menerjemahkan sebuah posting, ia mendapat layar seperti ini:
Sekarang yang berikut ini bisa terjadi:
- Dia berhasil menyimpan posting dan terus menerjemahkan posting.
- Pengguna lain, admin jaringan, menghapus blog Jerman saat dia menulis.
- Dia menekan save lagi dan mendapat kesalahan basis data.
Saya ingin menghindari skenario itu. Bagaimana saya bisa mengecek dengan cepat jika blog target ada? Saya switch_to_blog()
sering menelepon di beberapa kelas yang berbeda, jadi harus cepat.
get_post()
hanya membaca. Mungkin ada jeda panjang antara penyimpanan terakhir dan pemuatan layar edit berikutnya.
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()
, tapi itu hanya membantu dengan cache persisten, bukan default pada hal WP halaman. Ngomong-ngomong, bagi saya itu tidak benar-benar jelas di mana Anda ingin memeriksa keberadaan blog: Ketika seseorang menghapus sebuah blog atau ketika seseorang mencoba untuk menulis posting yang diterjemahkan yang menunjuk ke blog yang berbeda (menyalakan konten yang sama dalam bahasa lain)?
$wpdb->blogid;
dengan kaitnyawp_insert_post_data
?