サポート » 使い方全般 » 固定ページでページング処理を行う方法

  • はじめまして よろしくお願いいたします。
    当方 wordpress、phpともに1ヶ月程度の経験しかないため、言葉不足・説明不足があるかと思いますがご容赦ください。

    色々なサンプル・ご意見を参考にしながら つぎはぎだらけですが、なんとかwordpressでサイトを作成しております。

    トップページをindex.phpで作成し(元々記述されていたソースを全て上書きしました)、外部複数のRSSを表示しページングにより表示件数をわけました。

    以下のソース(index.phpに直書き)になりますが、トップページ上では問題なく期待通りにページングされるのですが、固定ページ(test.php)で同じ処理を行ってもページ送りのリンクには “www.~/index.php?page=2″ というふうにトップページと同じ結果のURLを返してきます。(アドレスバーには実際にはindex.phpの部分は表示されません)

    固定ページでは固定ページで表示される複数RSS記事をページング処理によって表示件数をわけたいのですが、うまくいきません。ほか投稿者様の質問も拝見させていただいたのですが、解決に至りませんでした。解決の方法をどうか教えてください よろしくお願いいたします。

    参考になるかわかりませんが、補足を。。

    ・固定ページのテンプレートを”test.php”として”index.php”とRSSのURL以外はまったく同じソースを記述しています。作成する固定ページは空のまま作成しています。

    ・アドレスバーに ”www.~~/?page_id=52?page=3″ または ”www.~~/test?page=3″ のように直書きしても期待する表示結果にはなりませんでした。

    <?php
    $nums = 15; // 1ページの表示件数
    session_start(); // ページ遷移ごとにリクエストしないようにセッションを使用します。
    header('Content-Type:text/html; charset=UTF-8');
    
    $rss = fetch_feed(array(
    'http://~~',
    'http://~~',
    'http://~~'
    ));
    
    if (!is_wp_error( $rss ) ) :
        $rss->set_item_limit(10);
        $rss->set_cache_duration(600);
        $rss->init();
        $maxitems = $rss->get_item_quantity(100);
        $rss_items = $rss->get_items(0, $maxitems);
        date_default_timezone_set('Asia/Tokyo');
    endif;
    
    if ($maxitems == 0) {echo 'No items';}
    else{
    
    $pages = ceil($maxitems / $nums); // 最大ページ数を計算
    $page = (empty($_GET['page'])) ? 1 : $_GET['page']; // 現在のページを取得
    $start = ($page - 1) * $nums; // スタートページを設定
    $script = basename($_SERVER['SCRIPT_NAME']);
    
    $link = '';
    // 前ページ・次ページのリンク設定
    if ($page > 1) $link = '<span class ="page"><a href="'.$script.'?page='.($page -1) .'">前へ</a></span>';
    // 各ページへのリンクを表示する場合
    for($n = 1; $n <= $pages; $n++) {
      if($n == $page){
        $link .= '<span class ="thispage">'.$n.'</span>';
      } else {
        $link .= '<span class ="page"><a href="'.$script.'?page='. $n .'">'.$n.'</a></span>';
      }
    }
    if ($page < $pages) $link .= '<span class ="page"><a href="'.$script.'?page='.($page + 1) .'">次へ</a></span>';
    
    $count = 1;
    
    foreach ( $rss_items as $item ) {
    if ($count > $start && $count <= $start + $nums) {
    
    $imgn = preg_match("/<img\s.*?src=\"(.*?)\.(jpg|png|gif)\"/i", $item->get_content(), $images);
    
    if($imgn==1){
    echo '<div class="article_box"><div class="article"><a>get_permalink().'"
    target="_blank">'.$images[0].'title="'.$item->get_title().'【'.$item->get_feed()->get_title().'】" border="0" style="height:100px;width:105px"/></a></div><h3 class="article_title"><a>get_permalink().'" title="'.$item->get_title(). '【'.$item->get_feed()->get_title().'】" target="_blank">'.$item->get_title().'</a></h3><p class="description"><a>get_permalink().'" title="" target="_blank">'.$item->get_description().'</a></p><p class="blogname">'.$item->get_feed()->get_title().'</p><p class="date">'.$item->get_date("Y/n/j H:i").'</p></div>';
    }
    }
    $count++;
    }
    echo '<div style="margin: 15px 10px;">' . $link . "</div>\n";
    }
    
    ?>
  • トピック「固定ページでページング処理を行う方法」には新たに返信することはできません。