La esencia de la pregunta es que estoy buscando una solución como esta:
$blog_upload_dir_info = wp_upload_dir( $date, $blog_ID );
$blog_upload_url = $blog_upload_dir_info[ 'baseurl' ];
Donde $blog_ID
es diferente del ID del blog actual. La solución más »WP-obvia« falla:
switch_to_blog( $blog_ID );
$blog_upload_dir_info = wp_upload_dir();
restore_current_blog();
Por supuesto, podría establecer esta opción, pero esto uniría mi código a la configuración concreta del sistema, que incluye mucho potencial de "WTF?"
Así que decidí agregar esta opción virtualmente:
/**
* Apply a value to the option blog_upload_url
* if there's not already one
*
* @wp-hook option_upload_url_path
* @param string $upload_url
* @return string
*/
function get_real_blog_upload_url( $upload_url ) {
if ( '' !== trim( $upload_url ) )
return $upload_url;
$upload_path = trim( get_option( 'upload_path' ) );
$siteurl = get_option( 'siteurl' );
$wp_content_dir = $siteurl . '/wp-content';
if ( empty( $upload_path ) || 'wp-content/uploads' == $upload_path ) {
$dir = $wp_content_dir . '/uploads';
} elseif ( 0 !== strpos( $upload_path, ABSPATH ) ) {
// $dir is absolute, $upload_path is (maybe) relative to ABSPATH
$dir = path_join( ABSPATH, $upload_path );
} else {
$dir = $upload_path;
}
if ( empty( $upload_path ) || ( 'wp-content/uploads' == $upload_path ) || ( $upload_path == $dir ) )
$upload_path = $wp_content_dir . '/uploads';
else
$upload_path = trailingslashit( $siteurl ) . $upload_path;
return $upload_path;
}
que es en realidad una bifurcación en parte de upload_url_path
y como tal se basa en constantes que no es una buena práctica en absoluto . Además, un tenedor siempre está acoplado a la implementación original y, si el original cambia, también hay que arreglar el tenedor.
Entonces, como esta solución está lejos de ser perfecta, me pregunto si hay una mejor manera de obtener URLs de carga por ID de blog.