Sorunun özü şudur: Böyle bir çözüm arıyorum:
$blog_upload_dir_info = wp_upload_dir( $date, $blog_ID );
$blog_upload_url = $blog_upload_dir_info[ 'baseurl' ];
Nerede $blog_ID
şimdiki blog kimliğinin farklıdır. En »WP-bariz« çözümü başarısız olur:
switch_to_blog( $blog_ID );
$blog_upload_dir_info = wp_upload_dir();
restore_current_blog();
olarak wp_upload_dir () sabit dayanır WP_CONTENT_URL
seçenek sürece dinamik akım blog'un URL'sini ayarlanır upload_url_path
ayarlanır.
Tabii ki, bu seçeneği ayarlayabilirsiniz, ancak bu benim kodum çok »WTF?« - potansiyel içeren somut sistem ayarları ile birleştirir.
Bu yüzden bu seçeneği sanal olarak eklemeye karar verdim:
/**
* 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;
}
bu aslında kısmen bir çataldır wp_upload_dir()
ve bu nedenle iyi bir uygulama olmayan sabitlere dayanır . Dahası, bir çatal her zaman orijinal uygulamaya bağlanır ve orijinal değişirse, çatalın da sabitlenmesi gerekir.
Bu çözüm mükemmel olmaktan çok uzak olduğundan, URL'leri blog kimlikleriyle almanın daha iyi bir yolu olup olmadığını merak ediyorum.