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
?