जब मैं 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
?