Skip to content

Instantly share code, notes, and snippets.

@Crocoblock
Last active July 2, 2024 14:49
Show Gist options
  • Save Crocoblock/36cf11811c8b197a17aadd1615dd7e2b to your computer and use it in GitHub Desktop.
Save Crocoblock/36cf11811c8b197a17aadd1615dd7e2b to your computer and use it in GitHub Desktop.
JetEngine Break listing alphabetically load more / pagination compatibility / Terms Query compatibility
<?php
class JBBP_Terms_Fix {
public function __construct() {
add_filter( 'jet-engine/listing/render/default-settings', array( $this, 'default_settings' ) );
add_filter( 'jet-engine/listing/grid/nav-widget-settings', array( $this, 'nav_settings' ), 10, 2 );
add_filter( 'jet-engine-break-alphabetically/prev-post', array( $this, 'prev_term' ), 100, 3 );
}
public function default_settings( $settings ) {
$settings['jet_break_alphabetically'] = $settings['jet_break_alphabetically'] ?? false;
$settings['jet_break_by_prop'] = $settings['jet_break_by_prop'] ?? false;
$settings['jet_break_markup'] = $settings['jet_break_jet_break_markupalphabetically'] ?? false;
return $settings;
}
public function nav_settings( $nav, $settings ) {
$nav['jet_break_alphabetically'] = $settings['jet_break_alphabetically'] ?? false;
$nav['jet_break_by_prop'] = $settings['jet_break_by_prop'] ?? false;
$nav['jet_break_markup'] = $settings['jet_break_markup'] ?? false;
return $nav;
}
public function prev_term( $post, $query, $listing ) {
if ( $post || $query->query_type !== 'terms' ) {
return $post;
}
$page = $query->get_current_items_page();
if ( $page === 1 ) {
return $post;
}
$args = $query->build_current_query();
$items = $query->get_items();
$index = jet_engine()->listings->data->get_index();
if ( isset( $items[ $index + $args['offset'] - 1 ] ) ) {
return $items[ $index + $args['offset'] - 1 ];
}
$per_page = $query->get_items_per_page();
$args['offset'] = ( $page - 2 ) * $per_page;
if ( isset( $args['number'] ) ) {
$args['number'] = $per_page;
}
$terms = get_terms( $args );
return $terms[ array_key_last( $terms ) ] ?? $post;
}
}
new JBBP_Terms_Fix();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment