前回コーディングした top.php にはテーブル(表)が表示されます。テーブルの行数が多くなるとページが見づらくなったり、表示に時間がかかったりするようになるため、ページ内に表示する行数を制限します。これは、WordPressの投稿一覧などと同じなので、詳しく説明する必要はないと思います。
テーブルの上部や下部に(今回は上部だけですが)、下図のようなページを切り替える仕組み、ページネーションを表示します。
このページネーションは top.php
の 54行目で、以下のようにインクルードするように記述しています。
<?php include FOW_OH_PLUGIN_DIR . '/views/pagination.php'?>
インクルードされるファイル pagination.php
を作成します。
pagination.php の作成
pagination.php ファイルは、views
フォルダー内に作成します。内容は次のとおりです。
<?php
$pagination = $this->settings['pagination'];
$current = intval($pagination['current']);
$max = intval($pagination['max']);
$first = $current - intval(floor($pagination['middle'] / 2));
$last = $current + intval(floor($pagination['middle'] / 2));
if ($first < 1) {
$first = 1;
}
if ($last > $max) {
$last = $max;
}
$enable_back = ($current >= 2);
$enable_next = ($current <= $max - 1);
$omit_flont = ($first >= 3);
$omit_back = ($last <= $max - 2);
?>
<button type="submit" name="paged" class="button button-secondary" value="<?=$current - 1?>" <?=$enable_back ? '' : 'disabled'?>><前</button>
<?php if ($omit_flont): ?>
<button type="submit" name="paged" class="button button-secondary" value="1">1</button>
<span area-hidden="true">・</span>
<?php endif;?>
<?php for ($i = $first; $i <= $last; $i++): ?>
<button type="submit" name="paged" class="button button-<?=$current === $i ? 'primary' : 'secondary'?>" value="<?=$i?>"><?=$i?></button>
<?php endfor;?>
<?php if ($omit_back): ?>
<span area-hidden="true">・</span>
<button type="submit" name="paged" class="button button-secondary" value="<?=$max?>"><?=$max?></button>
<?php endif;?>
<button type="submit" name="paged" class="button button-secondary" value="<?=$current + 1?>" <?=$enable_next ? '' : 'disabled'?>>次></button>
2018/03/03 21:14 に、Pagination.php の内容を一部変更しています。
2018/09/27 18:18 に、pagination.php の内容を一部変更しました。