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