サポート » 使い方全般 » 固定ページのページングのリンク設定について

  • 解決済 goodoon

    (@goodoon)


    初めまして。WordPressの初心者で大変恐縮ではございますが、
    ご質問させていただきます。

    この度、固定ページに検索結果を表示し、その検索結果を件数指定し、
    ページングを行いたいと考えています。

    既にWordPress外では、実装でき正常動作を確認しているのですが、
    WordPressの固定ページに組み込むと、2ページ目のリンク設定が
    上手く行えておらず、誤動作してしまう状態です。

    コードは同一ファイルに
    【PHP】
    if ($_POST[“page”] !== “all”) {
       //取り出す最大レコード数
       $lim = $_POST[“page”];

       //最初と最後のページ番号を定義
       $first = 1;
       $last = ceil ($num / $lim);
       
       //表示するページ位置を取得
       $p = intval ($temp_p);
       if ($p < $first) {
         $p = $first;
       } elseif ($p > $last) {
         $p = $last;
       }

       //表示するレコード位置を取得
       $st = ($p – 1) * $lim;

       //前後のページ移動数と表示数
       //$page = 10 現在のページの前後10ページへのリンク番号を表示
       //$page = 10 現在のページの前後10ページ目に移動
       $page = 3;

       //前後$pageページ移動した際のページ番号を取得
       $prev = $p – $page;
       $next = $p + $page;

       //前後1ページ移動した際のページ番号を取得
       $prev01 = $p – 1;
       $next01 = $p + 1;

       //$stから$lim件のデータを取得し、並べ替える
       $sql .= ” ORDER BY hoge LIMIT ” . $st . “,” . $lim . “;”;

       //ページ移動リンクの組み立て

       //1ページ前のページ
       if ($p > 1) {
        $pagePrev = “<a href=\"$_SERVER[PHP_SELF]?p=$prev01\"><</a> “;
       }

       //各ページ番号への移動リンクを表示
       for ($cnt = $p – $page; $cnt <= $last; $cnt++) {
        if ($cnt < 1) {
          $cnt = 1;
        }
        $pageNo = “<a href=\"$_SERVER[PHP_SELF]?p=$cnt\">$cnt</a> “;

        //表示番号を指定数に区切る
        //ページ番号と現在のページが同一の場合は
        //リンク無しにする
        if ($cnt <= $p + $page) {
          if ($cnt == $p) {
             $pageNo = $p;
          }
         }
       }

       //1ページ後のページ
       if (($next01 – 1) * $lim < $reccnt) {
          $pageNext = “<a href=\"$_SERVER[PHP_SELF]?p=$next01\">></a> “;
       }

       //最初のページへ移動
       if ($p > 1) {
          $pageFirst = “<a href=\"$_SERVER[PHP_SELF]?p=$first\">最初</a> “;
       }

       //前の$pageページへ移動
       if ($p > $page) {
          echo “<a href=\”$_SERVER[PHP_SELF]?p=$prev\"><<</a> “;
       }

       //次の$pageページへ移動
       if (($next – 1) * $lim < $reccnt) {
          echo “<a href=\"$_SERVER[PHP_SELF]?p=$next\">>></a> “;
       }

       //最後のページへ移動
       if ($p < $last) {
          $pageLast = “<a href=\"$_SERVER[PHP_SELF]?p=$last\">最後</a> “;
       }
    }

    【html】
    <?php
    echo $pageFirst;
    echo $pagePrev;
    echo $pageNo;
    echo $pageNext;
    echo $pageLast;
    ?>

    としており、a href=\”$_SERVER[PHP_SELF]?p=$hoge が上手く行えて
    いないからだと自分では考えているので、hrefにこのファイルの指定や
    私が思い当たる方法では試してみたのですが、やはり解決することはできませんでした。

    説明が不十分で大変失礼かと思いますが、どういった原因が考えられるでしょうか?
    リンク以外の観点からも、アドバイスをいただければと考えております。

    お力を貸していただければ大変嬉しく思います。よろしくお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • p とか page とかの名前が良くないのでは?

    $_POST["page"] !== "all"
    $pageLast = "<a href=\"$_SERVER[PHP_SELF]?p=・・

    $public_query_vars に登録されているクエリー変数は使ってはいけなかったような・・。

    wp-include/class-wp.php

    var $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type');

    トピック投稿者 goodoon

    (@goodoon)

    早急なお返事ありがとうございます。

    <a href=\"$_SERVER[PHP_SELF]?p=$last\">最後</a> “;
    の部分を
    sprintf(‘<a href="%s?p=%s\">最後</a> ‘,home_url(/固定ページ名),$last);
    とする事でリンク自体の接続は上手く行えたようなのですが、

    ページを移動するとシンタックスエラー
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘-0,’ at line 1
    が表示されてしまいます。

    記載ミスなのかpluto1234様がおっしゃった様に予約語の可能性を考え、ご指摘の部分
    $_POST[“page”] →$_POST[“myPage”]
    ?p=→?my_page=

    に変更しましたが、エラーは解除されませんでした。

    お手間お掛けして大変恐縮ですが、再度お力を貸していただければと思いますので
    よろしくお願い致します。

    トピック投稿者 goodoon

    (@goodoon)

    pluto1234様のご指摘の予約語関係の見直しと、GETでの受け渡しにミスがあり、解決することができました。この度はありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「固定ページのページングのリンク設定について」には新たに返信することはできません。