वर्डप्रेस फ़ंक्शन switch_to_blog()
इनपुट पैरामीटर के रूप में पूर्णांक की अपेक्षा करता है। आप इसके बारे में कोडेक्स में अधिक पढ़ सकते हैं:
http://codex.wordpress.org/Function_Reference/switch_to_blog
कृपया इसके बजाय इस तरह की संरचना का प्रयास करें:
// Get the current blog id
$original_blog_id = get_current_blog_id();
// All the blog_id's to loop through
$bids = array( 1, 2 );
foreach( $bids as $bid )
{
// Switch to the blog with the blog_id $bid
switch_to_blog( $bid );
// ... your code for each blog ...
}
// Switch back to the current blog
switch_to_blog( $original_blog_id );
अपडेट करें:
यदि आप प्रत्येक ब्लॉग के लिए विभिन्न श्रेणियों से पोस्ट लाना चाहते हैं, तो आप उदाहरण के लिए उपयोग कर सकते हैं:
// Get current blog
$original_blog_id = get_current_blog_id();
// Setup a category slug for each blog id, you want to loop through - EDIT
$catslug_per_blog_id = array(
1 => 'video',
4 => 'news'
);
foreach( $catslug_per_blog_id as $bid => $catslug )
{
// Switch to the blog with the blog id $bid
switch_to_blog( $bid );
// ... your code for each blog ...
$myposts = get_posts(
array(
'category_name' => $catslug,
'posts_per_page' => 10,
)
);
// ... etc
}
// Switch back to the current blog
switch_to_blog( $original_blog_id );
उदाहरण:
यहां एक उदाहरण दिया गया है जो आपको टेम्प्लेट टैग का उपयोग करने की अनुमति देता है (यह मेरी मल्टीसाइट इंस्टाल पर काम करता है):
// Get current blog
$original_blog_id = get_current_blog_id();
// Setup a category for each blog id you want to loop through - EDIT
$catslug_per_blog_id = array(
1 => 'video',
4 => 'news'
);
foreach( $catslug_per_blog_id as $bid => $catslug )
{
//Switch to the blog with the blog id $bid
switch_to_blog( $bid );
// Get posts for each blog
$myposts = get_posts(
array(
'category_name' => $catslug,
'posts_per_page' => 2,
)
);
// Skip a blog if no posts are found
if( empty( $myposts ) )
continue;
// Loop for each blog
$li = '';
global $post;
foreach( $myposts as $post )
{
setup_postdata( $post );
$li .= the_title(
$before = sprintf( '<li><a href="%s">', esc_url( get_permalink() ) ),
$after = '</a></li>',
$echo = false
);
}
// Print for each blog
printf(
'<h2>%s (%s)</h2><ul>%s</ul>',
esc_html( get_bloginfo( 'name' ) ),
esc_html( $catslug ),
$li
);
}
// Switch back to the current blog
switch_to_blog( $original_blog_id );
wp_reset_postdata();
यहाँ बीथोवेन नाम की साइट 1 और बाच नाम की साइट 4 के साथ हमारे उपरोक्त उदाहरण के लिए एक डेमो स्क्रीनशॉट है :
पुनश्च: लिंक की मेरी गलतफहमी को स्पष्ट करने वाले लिंक प्रदान करने वाले @brasofilo को धन्यवाद ; restore_current_blog()
;-)
PPS: निम्न टिप्पणी साझा करने के लिए @ChristineCooper का धन्यवाद:
बस एक दोस्ताना चेतावनी। सुनिश्चित करें कि अपनी मूल ब्लॉग आईडी को चर पर सेट न करें $blog_id
- ऐसा इसलिए है क्योंकि इस switch_to_blog()
प्रक्रिया के दौरान , $blog_id
कोर फ़ंक्शन द्वारा ओवरराइड किया जाएगा, जिसका अर्थ है कि जब आप मूल ब्लॉग पर वापस स्विच करने का प्रयास करेंगे, तो आप अंतिम पर स्विच करने के साथ समाप्त हो जाएंगे। एक तुम के माध्यम से पाला। थोड़ा सा दिमाग-पहेली। :)