为什么在分页时需要一个不太可能的整数?


17

paginate_links法典函数引用有就是BEING转贴遍布净一些示例代码。

它具有使用名为的变量的部分$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功能。

这是某种形式的封装吗?

Answers:


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看起来曾经是一个真正的问题。长期维护的代码库往往充满了针对极端情况的解决方法。
fuxia

看起来 paginate_links()并不总是使用get_pagenum_link()默认所以我不知道如果这是一个惯例,从在此之前,如果“不可能整数”是真正需要(或者,如果真正的解决方法是简单的get_pagenum_link())?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.