Get post thumbnail url with multisite
If you want to display materials on multisite function without switch_blog_id, then output the image material standard features wordpress fail. For this, I wrote this little function as a turnkey solution is nowhere found.
function multisite_thumb_url($pid, $bid){ //$pid - post id, $bid - blog id
if(isset($pid) && $pid>0){
if(isset($bid) && $bid>0){
global $wpdb;
$curr_blog_id=get_current_blog_id();
$wpdb->set_blog_id( $bid );
$post_thumbnail_id = $wpdb->get_var( "SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key = '_thumbnail_id' AND post_id = {$pid}" );
$post_thumbnail_metadata = $post_thumbnail_id ? maybe_unserialize( $wpdb->get_var( "SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key = '_wp_attachment_metadata' AND post_id = {$post_thumbnail_id}" ) ) : NULL;
if ( ! $post_thumbnail_metadata ){
return false;
}else{
if($bid==1){
$default_post_thumbnail_url = get_blog_option( $bid, 'siteurl' ).'/wp-content/uploads/'.$post_thumbnail_metadata[ 'file' ];
}else{
$default_post_thumbnail_url = get_blog_option( $bid, 'siteurl' ).'/wp-content/uploads/sites/'.$bid.'/'.$post_thumbnail_metadata[ 'file' ];
}
return $default_post_thumbnail_url;
}
$wpdb->set_blog_id( $curr_blog_id );
}else{
return wp_get_attachment_url( get_post_thumbnail_id($pid) );
}
}else{
return wp_get_attachment_url( get_post_thumbnail_id() );
}
}
get_the_post_thumbnail()
internally and looking at its source should give you the idea on how data is retrieved and formed.get_the_post_thumbnail
is correct. If you can't get that working, post the problematic code please.the_post_thumbnail();
is the only way (It is, I'm sure), I have to find a way to extract the src from it... :) Thank you very much in advance!