• 解決済 mokosuke

    (@mokosuke)


    マルチサイトの親サイトで
    get_last_updatedを利用し、子サイトの記事を取得しています。

    下記のようにして記事をすべて取得しました。
    これを10件ずつ表示しページ送りを付けたいのですが、その方法がわかりません。
    そもそもこの取得方法ではできないのでしょうか。

    $sites = get_last_updated();
    usort($sites, create_function('$a,$b', 'return strcmp($a["blog_id"], $b["blog_id"]);'));
    
    foreach($sites as $site):
     if($site['blog_id']!=1):
       switch_to_blog($site['blog_id']);
       query_posts('posts_per_page=-1');
       if (have_posts()): while(have_posts()): the_post();
         echo get_the_title();
       endwhile;
       endif;
    restore_current_blog();
    endif;
    endforeach;

    よろしくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    以下のようにすると、ページ送りは出来るようですが、それぞれのブログから、5個表示するので、件数は、ブログが10個あれば、50表示されます。

    また、どこかのブログが投稿件数が少ない場合、ページによっては、50件以下になってしまいます。

    echoしている部分を、配列に入れなおして、表示するとか、

    それぞれのページへのリンクは、独自に作らないといけないような感じですね。

    $sites = get_last_updated ( );
    
    usort ( $sites, create_function ( '$a,$b', 'return strcmp ( $a["blog_id"], $b["blog_id"] ) ;' ) ) ;
    
    foreach ( $sites as $site ) {
    	if ( $site['blog_id'] !== 1 ) {
    
    		 switch_to_blog ( $site['blog_id'] ) ;
    			$query 		= get_query_var('paged');
    			$per_page 	= 5;
    
    query_posts( 'post_status=publish&posts_per_page='.$per_page.'&paged='.$query ); 
    
    		 if ( have_posts ( ) ) {
    			 while ( have_posts ( ) ) : the_post ( ) ;
    			 echo get_the_title ( ) .'<br />';
    			 endwhile;
    		 }
    
    		restore_current_blog ( ) ;
    
    		wp_reset_query();
    
    	}
    
    }
    トピック投稿者 mokosuke

    (@mokosuke)

    nobitaさん
    ありがとうございます。

    それぞれのブログの投稿数が影響してくる部分を考えていなかったので、
    希望通りのものを作るのは自分では難しそうです。
    今回は各ブログの最新1件だけをとってきて、それを一覧表示する方法にしようと思います。
    回答いただいてありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「子サイトの記事を取得して一覧表示し、ページ送りをつける」には新たに返信することはできません。