サポート » 使い方全般 » 一部のネットワークブログの新着記事が取得が出来ない

  • kaoriwatanabe0603

    (@kaoriwatanabe0603)


    初めて書き込みさせていただきます。

    マルチサイトで作成しているのですが、
    新規に追加したネットワークブログの新着記事が古いものから3件しか取得できません。

    原因がわからない為、わかる方がおりましたら原因として考えられることを
    教えていただけると助かります。

    宜しくお願い申し上げます。

    使用しているコードは以下の通りです。

    ★functions.php

    function get_blog_all_entry($denyBlogs) {
      global $wpdb;
      //現在のブログIDをメモ
      $mysiteid = $GLOBALS['blog_id'];
      //マルチサイトの情報を取得
      $blogLists = $wpdb->
             get_results( "SELECT blog_id FROM wp_blogs ORDER BY blog_id" );
    
      foreach ($blogLists as $blog) {
        $blog_id = $blog->blog_id;
        if (in_array($blog_id, $denyBlogs))
          continue; //指定ブログはスキップ
    
        //ブログ切替
        switch_to_blog($blog->blog_id);
        //ブログのサイト名とURLを取得
        $siteurl = get_site_url();
        $blog_name = get_option('blogname');
    
        $my_posts = get_posts("showposts=3&post_status=publish"); //公開記事のみ
        if (have_posts()) {
          //タイムスタンプをキーに記事情報を格納
          foreach ($my_posts as $post) {
            setup_postdata($post);
    
            $get_post_time = $post->post_date;
            //同時更新への対応(タイムスタンプの末尾にブログIDとPostIDを付加)
            $unix_time = strtotime($get_post_time) . ':' . $blog_id . '-' . $post->ID;
            $entryAry[$unix_time]['quid'] = $post->guid;
            $entryAry[$unix_time]['ID'] = $post->ID;
            $entryAry[$unix_time]['title'] = $post->post_title;
            $entryAry[$unix_time]['date'] = date('Y/m/d', strtotime($post->post_date));
            //ブログのサイト名とURLを格納
            $entryAry[$unix_time]['siteurl'] = $siteurl;
            $entryAry[$unix_time]['blogname'] = $blog_name;
            $entryAry[$unix_time]['blog_id'] = $blog_id;
    
            //カテゴリ情報保存
            $entryAry[$unix_time]['categories'] = get_the_category($post->ID);
    
            //カテゴリリンクはマルチblog内でしか取得できないので、このループ上で生成
            $categories_link = '';
            $categories = get_categories();
            foreach ($categories as $category) {
              $categories_link .= '
              <li>
                <a class="TextCtg" href="' . get_category_link($category->cat_ID) . '">' . $category->cat_name . '</a>
              </li>
              ';
            }
            $entryAry[$unix_time]['categories']['link'] = $categories_link;
          }
        }
      }
      //ブログ切替終了
      restore_current_blog();
      switch_to_blog($mysiteid); //ブログを強制的に呼び出しブログに切り替える
    
      if (count($entryAry) > 0) {
        krsort($entryAry); //全記事をタイムスタンプ順に並び替え
        return $entryAry;
      } else {
        return false;
      }
    }

    ★テンプレコード

    <div class="news_box">
    
    <ul class="scrollbar">
    
    <?php
    
    $network_posts = get_recentposts_from_network( 'perblog=1' );
    if( $network_posts ) :
    foreach( (array) $network_posts as $key => $post ) {
    switch_to_blog( $post->blog_id );//取得するブログIDの配列$post->blog_id
    setup_postdata( $post );
    ?>
    <li>
    <dl>
    <dt><?php the_time('Y.m.d');?></dt>
    <dd>
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br />
    <p class="saishin"><?php echo get_bloginfo( 'name' ); ?></p></dd>
    </dl>
    </li>
    <?php
    restore_current_blog();
    }
    wp_reset_query();
    endif;
    ?>
    
    </ul><!--//-->
    
    <div class="clearfix">
    
    </div>
    </div>

  • トピック「一部のネットワークブログの新着記事が取得が出来ない」には新たに返信することはできません。