当我switch_to_blog()
使用博客ID 打电话时,我不知道该博客是否确实存在。该函数始终返回TRUE
。
测试用例:
switch_to_blog( PHP_INT_MAX );
$post = get_post( 1 );
restore_current_blog();
这将导致数据库错误显示给用户。我该如何预防?
现实世界中的用例
我是Multilingual Press的首席开发人员。用户翻译帖子时,会看到如下屏幕:
现在可能发生以下情况:
- 她成功保存了帖子,并继续翻译帖子。
- 另一个用户(网络管理员)在写作时会删除德语博客。
- 她再次点击保存并获得数据库错误。
我想避免这种情况。如何快速检查目标博客是否存在?我switch_to_blog()
经常在多个不同的班级中打电话,因此必须快速。
@JMau
—
fuxia
get_post()
只是阅读。在上一次保存和下一次编辑屏幕重新加载之间可能会有较长的暂停时间。
对wp_blogs表中的blog_id的按请求缓存的SQL查询(已删除= 0)?
—
gmazzap
@GM
—
凯撒
SELECT blog_id FROM {$wpdb->blogs} WHERE site_id = %d AND public = '1' AND archived = '0' AND spam = '0' AND deleted = '0'
@toscho 大声思考 ...有
—
凯撒
wp_cache_switch_to_blog()
,但仅对持久性缓存有帮助,而不对页面WP上的默认设置有用。无论如何,对我而言,并不确定在哪里检查博客的存在:当某人删除博客或某人试图撰写指向另一博客的翻译后的帖子时(用另一种语言提供相同的内容)?
$wpdb->blogid;
那钩又wp_insert_post_data
呢?