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
—
kaiser
SELECT blog_id FROM {$wpdb->blogs} WHERE site_id = %d AND public = '1' AND archived = '0' AND spam = '0' AND deleted = '0'
@toscho 大声で考える ...がありますが
—
カイザー14年
wp_cache_switch_to_blog()
、それは永続的なキャッシュでのみ役立ち、ページWPのデフォルトではありません。とにかく、ブログの存在を確認したい場所が本当に明確ではありません:誰かがブログを削除したり、別のブログを指す翻訳された投稿を書いたりするとき(同じコンテンツを別の言語で提供する)?
$wpdb->blogid;
とフックwp_insert_post_data
?