Cuando llamo switch_to_blog()
con una identificación de blog, no sé si ese blog realmente existe. La función vuelve siempre TRUE
.
Caso de prueba:
switch_to_blog( PHP_INT_MAX );
$post = get_post( 1 );
restore_current_blog();
Esto provocará errores en la base de datos que están expuestos al usuario. ¿Cómo puedo evitar eso?
Caso de uso del mundo real
Fui el desarrollador principal de Multilingual Press . Cuando un usuario traduce una publicación, obtiene una pantalla como esta:
Ahora puede suceder lo siguiente:
- Ella guarda la publicación con éxito y continúa traduciendo la publicación.
- Otro usuario, un administrador de red, elimina el blog alemán mientras escribe.
- Presiona guardar nuevamente y obtiene errores de la base de datos.
Quiero evitar ese escenario. ¿Cómo puedo verificar rápidamente si existe el blog de destino? Llamo switch_to_blog()
muy a menudo en varias clases diferentes, por lo que tiene que ser rápido.
get_post()
es solo una lectura. Puede haber una pausa larga entre el último guardado y la próxima recarga de la pantalla de edición.
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()
, pero solo ayuda con el caché persistente, no el valor predeterminado en la página WP. De todos modos, para mí no está realmente claro dónde desea verificar la existencia del blog: ¿Cuándo alguien elimina un blog o cuando alguien intenta escribir la publicación traducida que apunta a un blog diferente (activando el mismo contenido en otro idioma)?
$wpdb->blogid;
y el ganchowp_insert_post_data
?