)->query->encode_provider_data(
$this->get_id(),
$query_id
);
return $args;
}
/**
* Get provider name
*/
public function get_name() {
return __( 'JetEngine', 'jet-smart-filters' );
}
/**
* Get provider ID
*/
public function get_id() {
return 'jet-engine';
}
/**
* Get filtered provider content
*/
public function ajax_get_content() {
if ( ! function_exists( 'jet_engine' ) ) {
return;
}
add_filter( 'jet-engine/listing/grid/posts-query-args', array( $this, 'add_query_args' ), 10, 2 );
if ( jet_engine()->has_elementor() ) {
Elementor\Plugin::instance()->frontend->start_excerpt_flag( null );
}
$attrs = isset( $_REQUEST['settings'] ) ? $this->sanitize_settings( $_REQUEST['settings'] ) : array();
$render = jet_engine()->listings->get_render_instance( 'listing-grid', $attrs );
$render->render();
}
/**
* Get provider wrapper selector
*/
public function get_wrapper_selector() {
return apply_filters(
'jet-smart-filters/providers/jet-engine/selector',
'.jet-listing-grid.jet-listing'
);
}
/**
* Get provider list selector
*/
public function get_list_selector() {
return '.jet-listing-grid__items';
}
/**
* Get provider list item selector
*/
/* public function get_item_selector() {
return '.jet-listing-grid__item';
} */
/**
* Action for wrapper selector - 'insert' into it or 'replace'
*/
public function get_wrapper_action() {
return 'replace';
}
/**
* If added unique ID this paramter will determine - search selector inside this ID, or is the same element
*/
public function in_depth() {
return true;
}
/**
* Pass args from reuest to provider
*/
public function apply_filters_in_request() {
$args = jet_smart_filters()->query->get_query_args();
if ( ! $args ) {
return;
}
add_filter( 'jet-engine/listing/grid/posts-query-args', array( $this, 'add_query_args' ), 20, 2 );
}
/**
* Updates the arguments based on the offset parameter
*/
public function query_maybe_has_offset( $args ) {
if ( isset( $args['offset'] ) ){
add_filter( 'found_posts', array( $this, 'adjust_offset_pagination' ), 1, 2 );
if ( isset( $args['paged'] ) ) {
$args['offset'] = $args['offset'] + ( ( $args['paged'] - 1 ) * $args['posts_per_page'] );
}
}
return $args;
}
/**
* Adjusts page number shift
*/
function adjust_offset_pagination( $found_posts, $query ) {
$found_posts = (int) $found_posts;
$offset = (int) $query->get( 'offset' );
if ( $query->get( 'jet_smart_filters' ) && ! empty( $offset ) ){
$paged = $query->get( 'paged' );
$posts_per_page = $query->get( 'posts_per_page' );
if ( 0 < $paged ){
$offset = $offset - ( ( $paged - 1 ) * $posts_per_page );
}
return $found_posts - $offset;
}
return $found_posts;
}
/**
* Add custom query arguments
*/
public function add_query_args( $args, $widget ) {
if ( 'jet-listing-grid' !== $widget->get_name() ) {
return $args;
}
if ( ! jet_smart_filters()->query->is_ajax_filter() ) {
$settings = $widget->get_settings();
if ( empty( $settings['_element_id'] ) ) {
$query_id = 'default';
} else {
$query_id = $settings['_element_id'];
}
$request_query_id = jet_smart_filters()->query->get_current_provider( 'query_id' );
if ( $query_id !== $request_query_id ) {
return $args;
}
// Replace global wp_query if is archive template
$is_archive_template = isset( $settings['is_archive_template'] ) ? $settings['is_archive_template'] : false;
$is_archive_template = filter_var( $is_archive_template, FILTER_VALIDATE_BOOLEAN );
if ( $is_archive_template ) {
global $wp_query;
$archive_query_vars = array_merge( $wp_query->query_vars, jet_smart_filters()->query->get_query_args() );
$archive_query_vars = $this->query_maybe_has_offset( $archive_query_vars );
$wp_query = new WP_Query( $archive_query_vars );
return $archive_query_vars;
}
}
if ( jet_smart_filters()->query->is_ajax_filter() ) {
remove_filter( 'jet-engine/listing/grid/posts-query-args', array( $this, 'add_query_args' ), 10, 2 );
}
$query_args = jet_smart_filters()->utils->merge_query_args( $args, jet_smart_filters()->query->get_query_args() );
$query_args = $this->query_maybe_has_offset( $query_args );
return $query_args;
}
}
}
Krebs Simon - Weingut Brunnmühle
Zum Inhalt wechseln