Skip to content

Instantly share code, notes, and snippets.

@yanknudtskov
Last active August 30, 2021 16:05
Show Gist options
  • Save yanknudtskov/6565d4c6983a73e65fb5b6fa16253abc to your computer and use it in GitHub Desktop.
Save yanknudtskov/6565d4c6983a73e65fb5b6fa16253abc to your computer and use it in GitHub Desktop.
FacetWP Pagination for Enfold and WooCommerce #woocommerce #enfold
<?php
/**
* The Template for displaying product archives, including the main shop page which is a post type archive.
*
* Override this template by copying it to yourtheme/woocommerce/archive-product.php
*
* @author WooThemes
* @package WooCommerce/Templates
* @version 2.0.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
get_header( 'shop' ); ?>
<?php
/**
* woocommerce_before_main_content hook
*
* @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
* @hooked woocommerce_breadcrumb - 20
*/
do_action( 'woocommerce_before_main_content' );
?>
<?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>
<h1 class="page-title"><?php woocommerce_page_title(); ?></h1>
<?php endif; ?>
<?php
/**
* woocommerce_archive_description hook
*
* @hooked woocommerce_taxonomy_archive_description - 10
* @hooked woocommerce_product_archive_description - 10
*/
do_action( 'woocommerce_archive_description' );
?>
<?php if ( have_posts() ) : ?>
<?php
/**
* woocommerce_before_shop_loop hook
*
* @hooked woocommerce_result_count - 20
* @hooked woocommerce_catalog_ordering - 30
*/
do_action( 'woocommerce_before_shop_loop' );
?>
<?php woocommerce_product_loop_start(); ?>
<?php woocommerce_product_subcategories(); ?>
<div class="facetwp-template">
<div class="pagination yanco-fwp-pagination">
<?php echo do_shortcode('[facetwp pager="true"]'); ?>
</div>
<?php while ( have_posts() ) : the_post(); ?>
<?php wc_get_template_part( 'content', 'product' ); ?>
<?php endwhile; // end of the loop. ?>
<div class="pagination">
<?php echo do_shortcode('[facetwp pager="true"]'); ?>
</div>
</div>
<?php woocommerce_product_loop_end(); ?>
<?php
/**
* woocommerce_after_shop_loop hook
*
* @hooked woocommerce_pagination - 10
*/
do_action( 'woocommerce_after_shop_loop' );
?>
<?php elseif ( ! woocommerce_product_subcategories( array( 'before' => woocommerce_product_loop_start( false ), 'after' => woocommerce_product_loop_end( false ) ) ) ) : ?>
<?php wc_get_template( 'loop/no-products-found.php' ); ?>
<?php endif; ?>
<?php
/**
* woocommerce_after_main_content hook
*
* @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content)
*/
do_action( 'woocommerce_after_main_content' );
?>
<?php
/**
* woocommerce_sidebar hook
*
* @hooked woocommerce_get_sidebar - 10
*/
do_action( 'woocommerce_sidebar' );
?>
<?php get_footer( 'shop' ); ?>
<?php
add_action( 'after_setup_theme', 'enfold_woocommerce_child_theme_code' );
function enfold_woocommerce_child_theme_code() {
remove_action( 'woocommerce_after_shop_loop', 'avia_woocommerce_after_shop_loop', 10);
add_action( 'woocommerce_after_shop_loop', 'yanco_avia_woocommerce_after_shop_loop', 10);
add_action( 'woocommerce_after_shop_loop', 'yanco_avia_woocommerce_after_shop_loop', 10);
}
/**
* Facet WP Modifications to Pagination
*/
function 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', 'custom_facetwp_pager', 10, 2 );
function yanco_facetwp_cache_lifetime( $seconds ) {
return 60*60*6; // one day
}
//add_filter( 'facetwp_cache_lifetime', 'yanco_facetwp_cache_lifetime' );
/**
* Remove Avia pagination on top of Product Archives
* Remove Avia pagination on bottom of Product Archives
*/
add_action( 'woocommerce_before_shop_loop', 'yanco_woocommerce_before_shop_loop', 21);
function yanco_woocommerce_before_shop_loop() {
$current_tax = get_query_var( 'product_cat' );
$term = get_term_by( 'slug', $current_tax, 'product_cat');
$term_meta = get_term_meta($term->term_id, 'display_type', true);
global $avia_config;
$pagination = '';
if( isset($avia_config['dynamic_template']) ) {
return;
}
if( isset($avia_config['overview'] ) ) {
//$pagination = '<div class="pagination">'.do_shortcode('[facetwp pager="true"]').'</div>';
}
switch( $term_meta ) {
case 'products':
case 'both':
case '':
//echo $pagination;
break;
case 'subcategories':
break;
default:
//echo $pagination;
break;
}
return;
}
function yanco_avia_woocommerce_after_shop_loop() {
// global $avia_config;
// if(isset($avia_config['dynamic_template'])) return;
// if(isset($avia_config['overview'] )) echo '<div class="pagination">'.do_shortcode('[facetwp pager="true"]').'</div>';
echo "</div></main>"; //end content
}
.yanco-fwp-pagination {
padding-top: 20px !important;
padding-bottom: 20px !important;
}
.facetwp-pager span.dots {
display: none;
}
.pagination {
a.facetwp-page {
color: $color-black-soft;
}
}
nav.pagination {
display: none;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment