マルチサイト化したブログのカスタムポストを表示する方法

カテゴリー:WordPress

昨日かなり久しぶりにマルチサイト化したWordPressを触りました!
、、、久しぶりすぎて、使うタグが全然分からなかったです笑
しかもマルチサイトとかもう全然使わずにいたのでなおさら笑
今回はマルチサイト化した状態で違うブログの記事
でわなく、違うブログのカスタムポストを表示する方法をメモしときます!

このタグがひたすら出てこなかった

まず、カスタムポストを表示させるのは簡単ですよね。

<?php
    $args = array(
        'posts_per_page' => -1,
        'post_type'      => customPostName
    );
    $the_query = new WP_Query( $args );
    if($the_query->have_posts()):
        while($the_query->have_posts()):
            $the_query->the_post();
?>
	<li><a href="<?php the_permalink(); ?>"><?php the_time("Y.m.d"); ?><?php the_title(); ?></a></li>

<?php
        endwhile;
    endif;
    wp_reset_postdata();
?>

・posts_per_pageのところは表示したい記事の件数です(-1は全件表示)
・post_typeのところはカスタムポスト名です
・閉じタグの「endwhile;endif;wp_reset_postdata();」をつけ忘れないこと

そう、これだけでカスタムポストは表示できますよね、、、
マルチサイトにして他のブログから持ってこようとはしなければ!!

マルチブログで、他のブログを呼び出す時のタグ

お前だよ!
「switch_to_blog(1);」

まぁ、正確に書けば

//スタートのタグ
<?php switch_to_blog(1) ?>

//エンドのタグ
<?php restore_current_blog(); ?>

ですね!

これを、先ほどのカスタムポストを表示する時のコードと組み合わせると

//スタートのタグ
<?php switch_to_blog(1) ?>

<?php
    $args = array(
        'posts_per_page' => -1,
        'post_type'      => customPostName
    );
    $the_query = new WP_Query( $args );
    if($the_query->have_posts()):
        while($the_query->have_posts()):
            $the_query->the_post();
?>
	<li><a href="<?php the_permalink(); ?>"><?php the_time("Y.m.d"); ?><?php the_title(); ?></a></li>
<?php
        endwhile;
    endif;
    wp_reset_postdata();
?>
//エンドのタグ
<?php restore_current_blog(); ?>

こうなります!

こまめにやっとかないと、すぐに忘れちゃうね、、、

最近はiPhone・Androidのアプリ開発をやらせてもらっているので、
WordPressからは遠ざかっていましたが、ここでこんなダメージを食らうとは思ってはいたけど想像以上でした笑

ただ、過去にマルチサイトの構築はしたことがあったので、
その時の遺産を探してコードをコピーするだけでした笑
遺産、大事、笑