Bản chất của câu hỏi là, tôi đang tìm kiếm một giải pháp như thế này:
$blog_upload_dir_info = wp_upload_dir( $date, $blog_ID );
$blog_upload_url = $blog_upload_dir_info[ 'baseurl' ];
$blog_ID
ID blog hiện tại khác nhau ở đâu . Giải pháp «WP-Rõ ràng nhất« thất bại:
switch_to_blog( $blog_ID );
$blog_upload_dir_info = wp_upload_dir();
restore_current_blog();
vì wp_upload_dir () dựa vào hằng số WP_CONTENT_URL
được đặt động URL của blog hiện tại trừ khi tùy chọn upload_url_path
được đặt.
Tất nhiên, tôi có thể đặt tùy chọn này, nhưng điều này sẽ kết hợp mã của tôi với các cài đặt hệ thống cụ thể bao gồm nhiều »WTF?« - tiềm năng.
Vì vậy, tôi quyết định thêm tùy chọn này hầu như:
/**
* 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;
}
trong thực tế, một phần ngã ba wp_upload_dir()
và như vậy phụ thuộc vào các hằng số không phải là một thực hành tốt . Hơn nữa, một ngã ba luôn được kết hợp với thực hiện ban đầu và nếu thay đổi ban đầu, người ta cũng phải sửa chữa ngã ba.
Vì vậy, vì giải pháp này không còn hoàn hảo, tôi tự hỏi liệu có cách nào tốt hơn để lấy URL tải lên bằng ID blog không.