Коли я дзвоню switch_to_blog()
з ідентифікатором щоденника, я не знаю, чи існує цей блог. Функція повертається завжди TRUE
.
Тестовий випадок:
switch_to_blog( PHP_INT_MAX );
$post = get_post( 1 );
restore_current_blog();
Це призведе до помилок бази даних, які піддаються користувачеві. Як я можу запобігти цьому?
Справа використання реального світу
Я був провідним розробником багатомовної преси . Коли користувач перекладає публікацію, вона отримує такий екран:
Тепер може статися таке:
- Вона успішно зберігає публікацію та продовжує перекладати публікацію.
- Інший користувач, адміністратор мережі, видаляє німецький блог, поки вона пише.
- Вона знову потрапляє на збереження та отримує помилки бази даних.
Я хочу уникнути цього сценарію. Як я можу швидко перевірити, чи існує цільовий блог? Я дзвоню switch_to_blog()
дуже часто в декілька різних класів, тому це повинно бути швидким.
get_post()
- це просто читання. Між останнім збереженням та наступним завантаженням екрана редагування може бути довга пауза.
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()
, але це допомагає лише з стійким кешем, а не за замовчуванням на сторінці WP. У будь-якому випадку, мені не зовсім зрозуміло, де ви хочете перевірити існування блогу: коли хтось видаляє блог або коли хтось намагається написати перекладений пост, який вказує на інший блог (живлення того ж вмісту іншою мовою)?
$wpdb->blogid;
гачкаwp_insert_post_data
?