Timber\Pagination::init PHP Метод

init() защищенный Метод

protected init ( $prefs = [], $wp_query = null )
    protected function init($prefs = array(), $wp_query = null)
    {
        if (!$wp_query) {
            global $wp_query;
        }
        // use the current page from the provided query if available; else fall back to the global
        $paged = isset($wp_query->query_vars['paged']) ? $wp_query->query_vars['paged'] : get_query_var('paged');
        global $wp_rewrite;
        $args = array();
        // calculate the total number of pages based on found posts and posts per page
        $ppp = 10;
        if (isset($wp_query->query_vars['posts_per_page'])) {
            $ppp = $wp_query->query_vars['posts_per_page'];
        }
        $args['total'] = ceil($wp_query->found_posts / $ppp);
        if ($wp_rewrite->using_permalinks()) {
            $url = explode('?', get_pagenum_link(0));
            if (isset($url[1])) {
                parse_str($url[1], $query);
                $args['add_args'] = $query;
            }
            $args['format'] = $wp_rewrite->pagination_base . '/%#%';
            $args['base'] = trailingslashit($url[0]) . '%_%';
        } else {
            $big = 999999999;
            $args['base'] = str_replace($big, '%#%', esc_url(get_pagenum_link($big)));
        }
        $args['type'] = 'array';
        $args['current'] = max(1, $paged);
        $args['mid_size'] = max(9 - $args['current'], 3);
        if (is_int($prefs)) {
            $args['mid_size'] = $prefs - 2;
        } else {
            $args = array_merge($args, $prefs);
        }
        $this->current = $args['current'];
        $this->total = $args['total'];
        $this->pages = Pagination::paginate_links($args);
        if ($this->total <= count($this->pages)) {
            // decrement current so that it matches up with the 0 based index used by the pages array
            $current = $this->current - 1;
        } else {
            // $data['current'] can't be used b/c there are more than 10 pages and we are condensing with dots
            foreach ($this->pages as $key => $page) {
                if (!empty($page['current'])) {
                    $current = $key;
                    break;
                }
            }
        }
        // set next and prev using pages array generated by paginate links
        if (isset($current) && isset($this->pages[$current + 1])) {
            $this->next = array('link' => user_trailingslashit($this->pages[$current + 1]['link']), 'class' => 'page-numbers next');
            if (Pagination::is_search_query($this->next['link'])) {
                $this->next['link'] = untrailingslashit($this->next['link']);
            }
        }
        if (isset($current) && isset($this->pages[$current - 1])) {
            $this->prev = array('link' => user_trailingslashit($this->pages[$current - 1]['link']), 'class' => 'page-numbers prev');
            if (Pagination::is_search_query($this->prev['link'])) {
                $this->prev['link'] = untrailingslashit($this->prev['link']);
            }
        }
        if ($paged < 2) {
            $this->prev = '';
        }
        if ($this->total === (double) 0) {
            $this->next = '';
        }
    }