ページネーション(ページャー)を作り直してプラグイン
Page No.1
ページネーション(ページャー)は『ページネーション(ページャー)自作』で作成したのですが。
他人様のサイトのテーマに組み込もうと思ったところ、パーマリンク設定がデフォルトの場合専用ということもあったので(少しでも軽くしようとしたんです)、それを汎用型にして他にいくつか機能も追加してと再び書き直すことにしました。
この時から、WordPress PHP コーディング基準に則って書くようにしました。条件式の論理比較においても左側に定数やリテラル、右側に変数を常に配置するというYoda Conditions(ヨーダ条件式)の作法でやってるつもりなんですが、気が付くと以前のとおり書いていて、後で戻って訂正するという二度でま状態。慣れるまではね・・・。
と、いうことで、
- *2015/9/26:オプションをチェックする部分を関数化して変更し、
- *2015/11/29:再び全体を修正。全てをclass化しカプセル化しました。
と、いうように何度かの改良を経て、2016年7月、今回はWordPress プラグイン公式ディレクトリに登録しようと思い立って、再び手を入れることにしました。
この投稿の記事は、以前にあった記事は消し去って、2016年7月に新しく書き直したものです。
そして2019年12月にページリストを作成する部分のコードを刷新しver.3.0にアップデートさせたのを期に再び書き直し始めています。
≪ Simplistic page navi Plugin ≫
WordPress プラグイン公式ディレクトリからダウンロードできます。
2016/8/13に、バージョンアップする予定のWordPress 4.6 においてのテストもあり、より高速化を図ってリンクを生成する部分を見直し、そのときに気が付いたバグを直すことも含めて大幅に改良をくわえて2.0 にバージョンアップさせました。
WordPress が5.3 に、PHP が7.3 になって、それらにおいての動作確認、そしてPHP7 ではいずれ廃止されるとの方法を使用していたアンインストール時におけるオプション値の消去方法を変更、無駄な条件判断の処理の多かったページリスト作成部分のコードを新たに書き直し2019/12/13に、やっとというか3.0 にバージョンアップさせています。この部分はページ数が多いほど無駄が多かったわけであり、それに加えて同じページで二度目に関数が呼び出されたときは、一度目に作ったリストをメモリーにストアしておいてそれを再利用するようにしたので、機能的にはかなり軽くなったものと思っています。
そして、WordPress が、5.8 となり、PHP は 7.4 から 8.0 へと変わりゆくなかで、動作確認をしなくては!と思いつつ、ただ、だらだらと時間が過ぎてしまったのですが、2021年9月8日、気がついたバグを修正し、流れで Gutenberg 用のブロックを装備、テンプレートをいじらなくても JavaScript でページャーの要素を HTML に挿入する機能などを追加し、そしてさらなるスピードアップのための改善を少し施して ver4.0 へとバージョンアップさせています。
この記事もバージョンアップにあわせて、新しくした部分など、おいおい編集していくつもりです。
Simplistic page navi Plugin
インストールや使い方はこのページの下の方のここを
とりあえず機能的なことは、
- オプションは管理画面で設定可能。
- 数字を直接指定できるdirect input & jump用のinput box がある。
- そのinput box の表示はオプションにて設定可能。
- リストを逆順でも表示可能。
- メディアクエリ等を使ってスマホなど小さいスクリーン用に対応する為に、必須でない要素をhiddenにするためのclassが設定されている。
- そのナロースクリーン用のスタイルの書き出しの設定とメディアクエリのmax-widthのpx値をオプションにて設定可能。
- デフォルトでスタイルシートを何種か用意。そして、その読み込みをオプションで選択可能。
- 最低限必要な要素のリストで表示させる設定がオプションで可能。
- 現在のページに隣接したページ番号を表示させる個数を設定可能。
- ページ数が多い時に表示する10の倍数のページ番号の個数を設定可能。
- 同様にページ数が多く、カレントページが両端のどちらかに寄っている時に最外のページから端までの間隔が広い時に表示する100の位のページ番号の個数を設定可能。
- FirstとLastページへのリンクのラベル文字列とページ番号が離れている時のつなぎ文字列を設定可能。
- ページリストの親タグの<div>のid名を指定可能。最外の親タグは<nav>。
- 同ページ内に二つ表示させ、それぞれに位置設定を詳細に出来るように、最外の親タグ<nav>には二つのid名を設定済み。
- 同ページ内に二つ表示させる場合、二度目に関数が呼び出された時は一度目に作成したリストをメモリーにストアしておいたものを再利用。
- スタイルにおけるフォントサイズ、テキストアライン、マージンをオプションにて設定可能。
- また、各オプションにおいてスタイルシートの読み込みに関する事以外は、テンプレートにおいてプラグインを起動する関数に引数として渡すことで設定することも可能。これは、同ページ内に二つ表示させた場合に、それぞれに違う表示をさせることが可能ということ。
- Gutenberg Block Editor 用の Custom Block を装備
- テーマのテンプレートにプラグインの関数タグを記述しなくても、ページャーを表示させたい HTML の要素の id を指定することで、Javascript によって、その指定された要素の先頭と末尾にページャーの要素を挿入する機能を装備
- そもそも HTML のことなど全くわからないという場合は、Javascript で本文のコンテンツの要素を探させて、もし運良く見つけることができればその要素の先頭と末尾にページャーの要素を挿入するなんてことも可能
- テーマが WordPress 標準のページャー wp_link_pages を使用している場合、その出力を消去することが可能
まずはオプション関連のコード部分。
オプションの設定と取得に関しては以前に自分で考えたものをそのまま使い回し。
90行目と93行目以降はv2.0でページナンバーによるリンク生成方法を変更しているので、それによって追加した関数。
簡単に説明しておくと、プラグインの読みこみの時に一度だけ、ページ番号に1を指定してget_pagenum_link() にて、現在表示されているページのページ指定の無い素のurl を取得しておいて、それを元にしてその都度ページ番号を指定したurl を生成しようというのがmake_pagenumlink()関数ということになります。詳しくは、もう少し後で出てくる《get_pagenum_link() に関して》で書いています。
この関数ですが、実は最後に”/”が付かないパーマリンク設定のときに”?”でのパラメータの付加があるときに生成されたリンクがおかしくなってしまうのでv2.0にアップした数日後にすぐに改良してv2.1へと再びバージョンアップさせています。
そしておもにスタイルシート関連。
管理画面にオプション設定ページを表示させる部分とアンインストールした時に保存してあるオプション値をデータペースから消去する処理の部分。
これらも他で使っているものと全く同じ処理のつかいまわし。
ただ、実際にオプション設定画面に表示させる部分のHTMLのコードに関しては、そこに使用説明書きを入れたこともあってとても長くなってしまい、しかしこの部分というのは通常のページを表示させる時には不必要なデータであると思われるので、別ファイルにして必要なときにinclude_onceで読み込まれるようにしました。こうすれば、多分、ページを表示する時には読み込まれないのではないかと思うのですが・・・。その、別ファイルにした部分はこのすぐ下に。
上記の別ファイルにした部分、explain.php の内容。
実際にその部分にあったコードを抜き取って、ただ別ファイルとして保存しただけのものです。
オプション設定画面部分。
ちなみに今回は翻訳処理などを使ってみたので、_e() という関数が出てきます。これは翻訳ファイル( -ja.mo )を読み込んで引数の英文を設定された日本語に翻訳して表示するというものです。WordPress では当たり前なのですが、今回、やっと初めて使ってみたことになります。
Post : 2015/09/02 18:11
Comments feed
Trackback URL : https://strix.main.jp/wp-trackback.php?p=58015