प्रश्न का सार है, मैं इस तरह से एक समाधान की तलाश में हूँ:
$blog_upload_dir_info = wp_upload_dir( $date, $blog_ID );
$blog_upload_url = $blog_upload_dir_info[ 'baseurl' ];
जहाँ $blog_ID
वर्तमान ब्लॉग आईडी से अलग है। सबसे »WP- स्पष्ट« समाधान विफल रहता है:
switch_to_blog( $blog_ID );
$blog_upload_dir_info = wp_upload_dir();
restore_current_blog();
जैसा कि wp_upload_dir () निरंतर पर निर्भर करता है WP_CONTENT_URL
जो गतिशील रूप से वर्तमान ब्लॉग के URL को तब तक upload_url_path
सेट करता है जब तक कि विकल्प सेट न हो।
बेशक, मैं इस विकल्प को सेट कर सकता था, लेकिन यह मेरे कोड को ठोस सिस्टम सेटिंग्स में जोड़ेगा, जिसमें बहुत अधिक »डब्ल्यूटीएफ शामिल है?« - संभावित।
इसलिए मैंने इस विकल्प को वस्तुतः जोड़ने का फैसला किया:
/**
* 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;
}
जो वास्तव में आंशिक रूप से कांटा है wp_upload_dir()
और जैसे कि स्थिरांक पर निर्भर करता है जो कि एक अच्छा अभ्यास नहीं है । इसके अलावा एक कांटा हमेशा मूल कार्यान्वयन के लिए युग्मित होता है और यदि मूल परिवर्तन होता है, तो एक कांटा को भी ठीक करना होगा।
इसलिए जब तक यह समाधान सही होने से बहुत दूर है, मुझे आश्चर्य है कि क्या ब्लॉग आईडी द्वारा अपलोड यूआरएल प्राप्त करने का एक बेहतर तरीका है।