প্রশ্নের সারমর্মটি হল, আমি এর মতো একটি সমাধান খুঁজছি:
$blog_upload_dir_info = wp_upload_dir( $date, $blog_ID );
$blog_upload_url = $blog_upload_dir_info[ 'baseurl' ];
যেখানে $blog_ID
বর্তমান ব্লগ আইডি থেকে আলাদা। সর্বাধিক »ডাব্লুপি-সুস্পষ্ট« সমাধান ব্যর্থ হয়:
switch_to_blog( $blog_ID );
$blog_upload_dir_info = wp_upload_dir();
restore_current_blog();
যেমন wp_upload_dir () ধ্রুবকটির উপর নির্ভর করে WP_CONTENT_URL
যা বিকল্পটি upload_url_path
সেট না করা অবধি বর্তমান ব্লগের ইউআরএলকে গতিশীলভাবে সেট করে ।
অবশ্যই, আমি এই বিকল্পটি সেট করতে পারতাম, তবে এটি আমার কোডটিকে কংক্রিট সিস্টেম সেটিংসে জোড়া দেবে যার মধ্যে অনেকগুলি »WTF?« - সম্ভাবনা রয়েছে।
সুতরাং আমি এই বিকল্পটি কার্যত যুক্ত করার সিদ্ধান্ত নিয়েছি:
/**
* 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()
এবং যেমন ধ্রুবকগুলির উপর নির্ভর করে যা মোটেই ভাল অনুশীলন নয় । তদাতিরিক্ত একটি কাঁটাচামচ সবসময় আসল বাস্তবায়নের সাথে মিলিত হয় এবং যদি আসল পরিবর্তন হয় তবে একটিও কাঁটাচামচ ঠিক করতে হবে।
সুতরাং এই সমাধানটি নিখুঁত হওয়ার থেকে দূরে থাকায় আমি ভাবছি যে ব্লগ আইডি দ্বারা ইউআরএলগুলি আপলোড করার আরও ভাল কোনও উপায় আছে কিনা।