Hàm WordPress switch_to_blog()
mong đợi một số nguyên làm tham số đầu vào. Bạn có thể đọc thêm về nó trong Codex:
http://codex.wordpress.org/Function_Reference/switch_to_blog
Vui lòng thử loại cấu trúc này thay thế:
// 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 );
Cập nhật:
Nếu bạn muốn tìm nạp các bài đăng từ các danh mục khác nhau cho mỗi blog, bạn có thể sử dụng ví dụ:
// 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 );
Thí dụ:
Dưới đây là một ví dụ cho phép bạn sử dụng thẻ mẫu (cách này hoạt động trên cài đặt nhiều trang của tôi):
// 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();
Dưới đây là ảnh chụp màn hình demo cho ví dụ trên của chúng tôi với trang 1 có tên Beethoven và trang 4 có tên Bach :
PS: Cảm ơn @brasofilo cung cấp liên kết làm rõ sự hiểu lầm của tôi về restore_current_blog()
;-)
PPS: Cảm ơn @ChristineCooper đã chia sẻ nhận xét sau:
Chỉ là một cảnh báo thân thiện. Đảm bảo không đặt id blog ban đầu của bạn thành biến $blog_id
- điều này là do trong switch_to_blog()
quá trình, $blog_id
sẽ bị ghi đè bởi chức năng cốt lõi, nghĩa là khi bạn cố gắng chuyển về blog ban đầu, bạn sẽ kết thúc bằng việc chuyển sang cuối cùng một bạn vòng qua. Một chút của một câu đố tâm trí. :)