Навіщо вам потрібне ціле ціле число для створення сторінок?


17

Посилання на paginate_linksфункцію Codex містить деякий зразок коду, який відтворюється по всій мережі.

У ньому є розділ, який використовує змінну під назвою $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_replaceв echo 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_linkвплив на існуючі номери сторінок? (оскільки paginate_links()використовується get_pagenum_link()за замовчуванням у будь-якому випадку). Мені це здається крайнім краєм, якщо я чогось не пропускаю?
Кай

@Cai Здається, колись це була справжня проблема. Кодові бази, що зберігаються протягом тривалого часу, як правило, заповнюються обхідними шляхами для крайових справ.
фуксія

Це виглядає paginate_links() не завжди використовувати get_pagenum_link()за замовчуванням , так що мені цікаво , якщо ця угода від до цього , і якщо «сумнівного цілого» дійсно необхідно (чи , якщо реальний обхідний шлях був просто get_pagenum_link())?
Кай
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.