yan-k
9/22/2017 - 8:28 AM

Custom Pagination for FacetWP

Custom Pagination for FacetWP

<?php

/**
 * FacetWP Custom Pagination
 */
function yanco_custom_facetwp_pager( $output, $params ) {
    $output = '';
    $page = (int) $params['page'];
    $total_pages = (int) $params['total_pages'];
    // Only show pagination when > 1 page
    if ( 1 < $total_pages ) {
        if ( 1 < $page ) {
            $output .= '<a class="facetwp-page" data-page="' . ( $page - 1 ) . '">&laquo;</a>';
        }
        if ( 3 < $page ) {
            $output .= '<a class="facetwp-page first-page" data-page="1">1</a>';
            // $output .= ' <span class="dots">…</span> ';
        }
        for ( $i = 2; $i > 0; $i-- ) {
            if ( 0 < ( $page - $i ) ) {
                $output .= '<a class="facetwp-page" data-page="' . ($page - $i) . '">' . ($page - $i) . '</a>';
            }
        }
        // Current page
        $output .= '<a class="facetwp-page active" data-page="' . $page . '">' . $page . '</a>';
        for ( $i = 1; $i <= 2; $i++ ) {
            if ( $total_pages >= ( $page + $i ) ) {
                $output .= '<a class="facetwp-page" data-page="' . ($page + $i) . '">' . ($page + $i) . '</a>';
            }
        }
        if ( $total_pages > ( $page + 2 ) ) {
            $output .= ' <span class="dots">…</span> ';
            $output .= '<a class="facetwp-page last-page" data-page="' . $total_pages . '">' . $total_pages . '</a>';
        }
        if ( $page < $total_pages ) {
            $output .= '<a class="facetwp-page" data-page="' . ( $page + 1 ) . '">&raquo;</a>';
        }
    }
    return $output;
}
add_filter( 'facetwp_pager_html', 'yanco_custom_facetwp_pager', 10, 2 );