Mengapa Anda membutuhkan bilangan bulat yang tidak biasa dalam pembuatan halaman?

17

The paginate_linksCodex fungsi referensi memiliki beberapa contoh kode yang sedang mem-posting ulang seluruh net.

Ini memiliki bagian yang menggunakan variabel yang disebut $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
) );

Dan digunakan di str_replacedalam echo paginate_linksfungsi.

Apakah ini semacam enkapsulasi?

Jason Green
sumber

Jawaban:

16

Perhatikan get_pagenum_link( $big ): Ini akan membuat URL ( bukan tautan) berdasarkan nomor yang disediakan pada parameter pertama.

Fungsi itu digunakan untuk mendapatkan pola dasar untuk URL, dan integer tinggi digunakan di sini, karena:

  1. Anda harus memberikan integer sebagai argumen.
  2. URL yang dihasilkan difilter dengan apply_filters('get_pagenum_link', $result)dan mungkin diubah oleh plugin. Risiko ini sedikit lebih tinggi untuk angka yang cocok dengan halaman yang ada, misalnya ketika plugin menerapkan judul yang terpisah untuk sub-halaman.

Jadi ini hanya ... konvensi kotor, sinyal ke plugin lain: Jangan ubah itu! Saya pikir PHP_INT_MAXakan lebih baik, tetapi masih jelek. Dan saya ingin tahu berapa banyak pengembang plugin yang tahu itu.

Nomor tersebut kemudian diganti dengan placeholder yang diperlukan di paginate_links().

Apa yang Anda lihat di sini adalah API yang tidak lengkap . Coba pelajari sesuatu dari contoh ini - jangan merilis API yang tidak lengkap, atau dokumen Anda akan terlihat memalukan. :)

fuxia
sumber
Saya setuju PHP_INT_MAX akan menjadi IMO yang lebih baik, tetapi akan membingungkan saya pada saat itu. Saya sangat menyukai penjelasan Anda, itu menegaskan bahwa saya berpikir di jalur yang benar. Aku hanya tidak ingin membuat asumsi.
Jason Green
Jadi apakah ini hanya digunakan dalam kasus filter untuk get_pagenum_linkmempengaruhi nomor halaman yang ada ? (sejak paginate_links()digunakan get_pagenum_link()secara default pula). Tampak seperti kasus tepi ekstrim bagi saya, kecuali saya kehilangan sesuatu?
Cai
@Cai Terlihat sudah menjadi masalah nyata sekali. Basis kode yang dipelihara dalam waktu yang lama cenderung diisi dengan solusi untuk kasus tepi.
fuxia
Ini terlihat seperti paginate_links() tidak selalu menggunakan get_pagenum_link()secara default sehingga aku bertanya-tanya apakah ini adalah sebuah konvensi dari sebelum itu dan jika 'bilangan bulat tidak mungkin' benar-benar diperlukan (atau jika solusi nyata hanya get_pagenum_link())?
Cai