マルチサイトの複数ブログ記事をタームスラッグを指定して一覧表示
-
こんにちは。
タームのスラッグを指定して記事一覧を表示する方法で困っております。
マルチサイト内の複数ブログ記事を、$wpdbを使ってターム別に時系列で表示しています。
■ 結果サンプル・タームA ・2018/10/1 タイトル(ブログID:2) ・2018/9/30 タイトル(ブログID:1) ・2018/9/29 タイトル(ブログID:2) ・タームB ・2018/10/2 タイトル(ブログID:1) ・2018/9/28 タイトル(ブログID:2) ・2018/9/27 タイトル(ブログID:1)
上記の様に表示する為のコードはこちらですが、これは「term_relationships」の「term_taxonomy_id」を指定して表示しているので、マルチサイトすべてのタームのIDが同じでなければうまく出力できません。
今後、ブログ1とブログ2のタームIDが異なってしまっても、スラッグの文字が同じなら表示できる様にするにはどの様に変更すればよいでしょうか。■ 複数ブログのターム別一覧
<?php foreach ( $terms as $term ){ $term_id = $term->term_id; $sql = ''; $blog_id_arr = array(1,2); $tmp = $blog_id_arr; foreach($blog_id_arr as $b_id){ next($tmp); switch_to_blog($b_id); $sql .= <<<HERE (SELECT *, $b_id as blog_id FROM $wpdb->posts pm1 INNER JOIN $wpdb->term_relationships pm2 ON (pm1.ID = pm2.object_id) WHERE post_type = 'post' AND post_status = 'publish' AND term_taxonomy_id = $term_id ) HERE; if(current($tmp) !== false){ $sql .= "UNION\n"; } restore_current_blog(); } $sql .= <<<HERE ORDER BY post_date DESC LIMIT 5 HERE; $posts = $wpdb->get_results($sql); ?> <ul class="TabPanel"> <?php foreach ($posts as $post): switch_to_blog($post->blog_id); setup_postdata($post); ?> <li class="blog<?php echo $blog_id = get_current_blog_id(); ?> post<?php echo $blog_id = get_current_blog_id(); ?>-<?php the_ID(); ?>"> <time><?php echo the_time('Y.m.d'); ?></time> <?php if ($terms = get_the_terms($post->ID,'species')) { foreach ( $terms as $term ) {echo ('<span class="tag_spe '.$term->slug.'">'.$term->name.'</span>');}} ?> <?php if ($terms = get_the_terms($post->ID,'field')) { foreach ( $terms as $term ){ if ( $term === end($terms)) { ?><span class="<?php echo $term->slug; ?>"><?php echo $term->name; ?></span><?php } else{ ?><span class="<?php echo $term->slug; ?>"><?php echo $term->name."、";} ?></span><?php } } ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php wp_reset_postdata();?> <?php restore_current_blog();?> <?php endforeach;?></ul> <?php } ?>
どうぞ宜しくお願い致します。
2件の返信を表示中 - 1 - 2件目 (全2件中)
2件の返信を表示中 - 1 - 2件目 (全2件中)
- トピック「マルチサイトの複数ブログ記事をタームスラッグを指定して一覧表示」には新たに返信することはできません。