Skip to content

Instantly share code, notes, and snippets.

@Asikur22
Created October 27, 2022 23:40
Show Gist options
  • Save Asikur22/552edd0c96ec52ac850c5823ee4cd20e to your computer and use it in GitHub Desktop.
Save Asikur22/552edd0c96ec52ac850c5823ee4cd20e to your computer and use it in GitHub Desktop.
Woocommerce shop product per page dropdown #ProductPerPage
/*
* Woocommerce shop product per page dropdown
*/
add_action( 'woocommerce_before_shop_loop', 'gl_asiq_woo_per_page_dropdown', 31 );
function gl_asiq_woo_per_page_dropdown() {
$per_page = filter_input( INPUT_GET, 'per_page', FILTER_SANITIZE_NUMBER_INT );
$orderby = filter_input( INPUT_GET, 'orderby', FILTER_SANITIZE_STRING );
$per_page_options = array(
'12' => '12',
'24' => '24',
'36' => '36',
'100' => '100'
);
?>
<form class="woocommerce-per-page" method="get">
<select id="woo-per-page" name="per_page">
<?php
foreach ( $per_page_options as $value => $label ) : ?>
<option <?php echo selected( $per_page, $value ); ?> value="<?php echo $value; ?>">Display: <?php echo $label; ?> per page</option>
<?php endforeach; ?>
</select>
<?php if ( ! empty( $orderby ) ) : ?>
<input type="hidden" name="orderby" value="<?php echo $orderby; ?>">
<?php endif; ?>
<script>
window.addEventListener( 'load', ( event ) => {
document.querySelector( '#woo-per-page' ).addEventListener( 'change', function ( event ) {
this.closest( 'form' ).submit();
} );
} );
</script>
</form>
<?php
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment