WordPress 함수 switch_to_blog()
는 정수를 입력 매개 변수로 예상합니다. Codex에서 자세한 내용을 읽을 수 있습니다.
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이 Beethoven 이고 사이트 4가 Bach 인 위의 예제에 대한 데모 스크린 샷입니다 .
추신 : @ -brasofilo 덕분에 ;-) 에 대한 나의 오해를 분명히 하는 링크 를 제공합니다.restore_current_blog()
PPS : 다음 의견을 보내 주신 @ChristineCooper에게 감사드립니다.
친절한 경고입니다. 원래 블로그 ID를 변수로 설정하지 않아야합니다. $blog_id
이는 switch_to_blog()
프로세스 중에 $blog_id
핵심 기능에 의해 무시 되기 때문입니다 . 즉, 원래 블로그로 다시 전환하려고하면 마지막 블로그로 전환하게됩니다. 당신이 반복 한. 약간의 수수께끼. :)