web関連

マルチサイトの記事ループを取得

マルチサイトの記事ループを取得

wordpressのマルチサイトで親サイト(blog_id = 1)の特定のカテゴリーの記事をループで表示させたかった時の備忘録

親サイトの特定のカテゴリーを数件表示

<?php
$blog_id = 1;
switch_to_blog($blog_id);//親サイトに切り替える
$args = array(
'posts_per_page' => 3,//何件取得するか
'category' => 4 //カテゴリーID
);
$posts = get_posts( $args );
if( $posts ) : foreach( $posts as $post ) : setup_postdata( $post );
?>

//ループさせたいコードが入ります。

<?php endforeach; ?>
<?php else: ?>
<?php endif;
wp_reset_postdata(); ?> //大事、忘れずに!

「switch_to_blog()」で親サイトに切り替えて、件数・カテゴリーを取得してループして件数分親サイトの記事を取得(この辺は普通のループと変わらない)
最後にwp_reset_postdata()を使い切り替えたのをもとに戻す。
これ忘れて大変な目にあった…

しっかりwp_reset_postdata()を入れることを忘れない!

【失敗例】
「restore_current_blog()」で閉じず普通のループと同じに「wp_reset_postdata()」で閉じ、いざサイトを確認したら上半分は子サイトで下半分が親サイトというキメラサイトができて割と焦った。