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

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

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

0回答

2324閲覧

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

y_tanatana

総合スコア27

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2016/08/31 07:00

編集2022/01/12 10:55

###実現したいこと
各マルチサイトを作成し、それぞれのお店の情報を登録しています。
すべてのマルチサイト(各お店の情報サイト)には、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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/31 07:12

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

2016/08/31 07:14

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

退会済みユーザー

2016/08/31 07:22

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

2016/08/31 07:38

ご質問ありがとうございます。 バージョンは4.5.3です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問