เมื่อฉันโทร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
?