ページネーションにありそうもない整数が必要なのはなぜですか?


17

paginate_linksコーデックス機能の参照はすべてネット上で転載されていますいくつかのサンプルコードが含まれています。

という変数を使用するセクションがあります$big = 999999999; // need an unlikely integer

echo paginate_links( array(
    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    'format' => '?paged=%#%',
    'current' => max( 1, get_query_var('paged') ),
    'total' => $wp_query->max_num_pages
) );

関数で使用さstr_replaceecho paginate_linksます。

これは何らかの形のカプセル化ですか?

回答:


16

get_pagenum_link( $big ):これにより、最初のパラメーターで指定された番号に基づいてURL(リンクではなく)が作成されます。

この関数は、URLの基本パターンを取得するために使用されます。ここでは、高整数が使用されます。

  1. 引数として整数を指定する必要があります。
  2. 結果のURLはフィルタapply_filters('get_pagenum_link', $result)され、プラグインによって変更される場合があります。このリスクは、既存のページと一致する数字の場合、たとえばプラグインがサブページに個別のタイトルを実装する場合など、わずかに高くなります。

これは単なる…汚い慣習であり、他のプラグインへの合図です:変更しないでください!PHP_INT_MAXもっと良かったと思うが、それでもい。そして、それを知っているプラグイン開発者は何人いるのでしょうか。

次に、番号はで必要なプレースホルダーに置き換えられpaginate_links()ます。

ここに表示されているのは、不完全なAPIです。この例から何かを学ぼう-不完全なAPIをリリースしないでください。そうしないと、ドキュメントが恥ずかしく見えます。:)


PHP_INT_MAXのほうがIMOの方が良かったのですが、当時はもっと混乱していたでしょう。私はあなたの説明が本当に好きです、それは私が正しい線に沿って考えていたことを確認します。仮定をしたくなかっただけです。
ジェイソングリーン

これは、既存のページ番号に影響を与えるフィルターの場合にのみ使用されますか?(とにかくデフォルトで使用するため)。何かを逃していない限り、私には極端なケースのように思えますか?get_pagenum_linkpaginate_links()get_pagenum_link()
カイ

@Caiはかつて本当に問題だったようです。長期間にわたって維持されているコードベースには、エッジケースの回避策がたくさんある傾向があります。
FUXIA

常にデフォルトで使用されていなかったよう見えるので、これがそれ以前の規則であるかどうか、そして「ありそうもない整数」が本当に必要かどうか(または実際の回避策は単にだったかどうか)?paginate_links()get_pagenum_link()get_pagenum_link()
カイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.