¿Por qué necesita un número entero poco probable en la paginación?

17

La paginate_linksreferencia de función del Codex tiene un código de muestra que se está volviendo a publicar en toda la red.

Tiene una sección que usa una variable llamada $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
) );

Y se usa str_replaceen la echo paginate_linksfunción.

¿Es esta alguna forma de encapsulación?

Jason Green
fuente

Respuestas:

16

Tenga en cuenta lo siguiente get_pagenum_link( $big ): Esto creará una URL ( no un enlace) basada en el número proporcionado en el primer parámetro.

Esa función se usa para obtener el patrón básico para la URL, y el entero alto se usa aquí, porque:

  1. Debe proporcionar un número entero como argumento.
  2. La URL resultante se filtra apply_filters('get_pagenum_link', $result)y puede ser modificada por complementos. Este riesgo es ligeramente mayor para los números que coinciden con las páginas existentes, por ejemplo, cuando un complemento implementa títulos separados para subpáginas.

Así que esto es solo una ... convención sucia, una señal para otros complementos: ¡No cambien eso por favor! Creo PHP_INT_MAXque hubiera sido mejor, pero todavía feo. Y me pregunto cuántos desarrolladores de complementos lo saben .

El número se reemplaza con el marcador de posición necesario en paginate_links().

Lo que ves aquí es una API incompleta . Intente aprender algo de este ejemplo: no publique API incompletas, o sus documentos se verán vergonzosos. :)

fuxia
fuente
Estoy de acuerdo en que PHP_INT_MAX hubiera sido mejor IMO, pero me habría confundido en ese momento más. Realmente me gusta su explicación, confirma que estaba pensando en la línea correcta. Simplemente no quería hacer ninguna suposición.
Jason Green
Entonces, ¿se usa esto solo en el caso de que un filtro get_pagenum_linkafecte los números de página existentes ? (ya que de todos modos paginate_links()usa get_pagenum_link()de forma predeterminada). ¿Me parece un caso extremo, a menos que me falte algo?
Cai
@Cai Parece que una vez ha sido un problema real. Las bases de código mantenidas durante mucho tiempo tienden a llenarse de soluciones para casos extremos.
fuxia
Se parece a paginate_links() no usar siempre get_pagenum_link()por defecto, así que me pregunto si esto es una convención de antes de esa fecha y si el 'número entero poco probable' es realmente necesario (o si la solución real era simplemente get_pagenum_link())?
Cai