Skip to content

Instantly share code, notes, and snippets.

@Crocoblock
Created January 23, 2023 15:38
Show Gist options
  • Save Crocoblock/3d0972f84dd2e097442a6dd0a0c2b14c to your computer and use it in GitHub Desktop.
Save Crocoblock/3d0972f84dd2e097442a6dd0a0c2b14c to your computer and use it in GitHub Desktop.
JetEngine Filter repeater items before output
<?php
add_filter( 'jet-engine/listings/dynamic-repeater/pre-get-saved', function( $items, $settings ) {
$classes = $settings['_css_classes'] ?? '';
if ( ! $classes ) {
return false;
}
$classes = explode( ' ', $classes );
$field = false;
foreach ( $classes as $class ) {
if ( false !== strpos( $class, 'from-cct-' ) ) {
$field = explode( 'from-cct-', $class )[1];
if ( ! empty( $field ) ) {
break;
}
}
}
if ( ! $field ) {
return false;
}
$object = jet_engine()->listings->data->get_current_object();
if ( ! $object ) {
return;
}
$items = $object->$field ?? false;
if ( ! is_array( $items ) && ! is_object( $items ) ) {
return false;
}
if ( is_object( $items ) ) {
$items = ( array ) $items;
}
$repeater_content = array_map( function( $item ) {
return array_map( function( $inner_item ) {
if ( ! is_string( $inner_item ) ) {
return ( array ) $inner_item;
} else {
return $inner_item;
}
}, ( array ) $item );
}, $items );
$items = ! empty( $repeater_content['item-0'] ?? false ) ? $repeater_content : array();
return $items;
}, 999999, 2 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment