質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.94%

wordpressで複数のマルチサイトの新着ブログを親サイトに表示する方法

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,748

score 27

実現したいこと

各マルチサイトを作成し、それぞれのお店の情報を登録しています。
すべてのマルチサイト(各お店の情報サイト)には、wordpressデフォルトの投稿で
ブログを掲載しようと考えています。

親サイトには、各お店の新着ブログを(マルチサイトで登録しているお店のブログすべての中での新着ブログ)5件ほど表示させようと考えています。

親サイトに表示させたい新着ブログの情報は以下の通りです。
・サイト名(該当サイトへリンク)
・ブログを投稿したユーザーのプロフィール画像(アバター)
・ブログのタイトル(該当ブログへリンク)
・ブログの内容全文
・投稿時間

課題

サイトを見ながら作成しましたところ
(ソースコードは以下の「該当のソースコード」項目をご覧ください。)

親サイトに表示させたい新着ブログの情報のうち
・サイト名 ← 該当サイトへはリンクしない
・ブログのタイトル(該当ブログへリンク)
・投稿時間

以上は表示できています。

親サイトに表示させたい新着ブログの情報のうち
・サイト名(該当サイトへリンク)
・ブログを投稿したユーザーのプロフィール画像(アバター)
・ブログの内容全文

以上がまだ表示できていません。

表示するレイアウトなどは、適当で構いません。
各情報・値などを取得して表示できれば良いです。

どれかひとつでも表示する方法がわかる方がいらっしゃればご回答いただけると助かります。

該当のソースコード

以下のソースコードをfunctions.phpに追加しました。

///////////////////////////////////////////////
// マルチブログ対応 新着記事一覧
// [multisite_post_list]
// total_posts_per_page・・・totalで取得表示する数:default=5;
// exclude_blogid…除外するブログ番号。default=1
function multisite_post_list_func($atts) {
    global $wpdb;
    global $post;

    $s = ( shortcode_atts(array(
        'total_posts_per_page' => 5,
        'exclude_blogid' => 1,
    ), $atts) );
    extract( $s, EXTR_SKIP );

    $query_args = array(
        'posts_per_page' => intval($total_posts_per_page),
        'order' => 'desc',
        'orderby' => 'date'
    );

    $temp_exclude_blogid = explode(',', $exclude_blogid );
    $exclude_blogid = array_map( "trim", $temp_exclude_blogid );

    $post_date = array();
    $post_list = array();
    $sites = get_last_updated();

    foreach( $sites as $site ) {
        if ( !in_array($site['blog_id'], (array)$exclude_blogid ) ) {
            switch_to_blog($site['blog_id']);

            $custom_query = new WP_Query( $s );
            if( $custom_query->have_posts() ) {
                while ( $custom_query->have_posts()) {
                    $custom_query->the_post();
                    $post_date[] = $post->post_date;
                    $post_list[] = array(
                        "link" => get_permalink(),
                        "title" => get_the_title('','',false),
                        "blog_id" => $site['blog_id'],
                    );
                }
            }
            wp_reset_query();
            restore_current_blog();
        }
    }

    // 投稿日時で並べ替える
    arsort( $post_date );
    reset( $post_date );

    // 指定個数にカット
    $post_date = array_slice($post_date, 0, intval($total_posts_per_page), true);

    $resword = '';
    $resword .= '<dl class="multisite_post_list">'."\n";
    foreach( $post_date as $key => $value ) {
        $resword .= '<dt>';
        $resword .= '<span class="date">';
        $resword .= mysql2date('Y年m月d日 H時i分',$value, false);
        $resword .= '</span>';
        $resword .= '</dt>'."\r\n";
        $resword .=  '<dd>'."\r\n";
        $resword .= '<a href="'.$post_list[$key]["link"].'" rel="bookmark" title="'.$post_list[$key]["link"].'.">';
        $resword .= $post_list[$key]["title"];
        $resword .= '</a>'."\r\n";
        $resword .= '('.get_blog_option($post_list[$key]["blog_id"], 'blogname').')';
        $resword .= '</dd>'."\r\n";
    }
    $resword .= '</dl>'."\r\n";

    return $resword;
}
add_shortcode('multisite_post_list', 'multisite_post_list_func');


以上です。

バージョン

wordpress-4.5.3

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • kuck1u

    2016/08/31 16:12

    コードをコードブロックで囲ってください。 「```(バッククオート3つ)」で囲み前後に改行をいれるか、コードを選択して[<code>]をクリックするとコードブロックになります。

    キャンセル

  • y_tanatana

    2016/08/31 16:14

    ご指摘ありがとうございます。
    コードをブロックで囲み、更新しました。

    キャンセル

  • kuck1u

    2016/08/31 16:22

    WordPressのバージョンはいくつですか?4.6と4.6未満では使用できる関数が異なり、4.6だとget_sites()関数が利用できるので色々便利です。

    キャンセル

  • y_tanatana

    2016/08/31 16:38

    ご質問ありがとうございます。

    バージョンは4.5.3です。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.94%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る