Oxygen Dynamic repeater examples

Author: Aleš Sýkora, 14. 1. 2021

Query parent pagedata in Oxygen repeater

Query parent page on child page. If current page is parent then query this page itself.

// Code block before repeater

<?php
$args = array(
    'post_parent' => get_the_ID(), // Current post's ID
);
$children = get_children( $args );
// Check if the post has any child
if ( ! empty($children) ) {
    // The post has at least one child
  function dynamic_ids_query( $query ) {
    if ( $query->query['post_type'][0] == 'nabidka' ) {
	$post_id = get_the_ID();
    $query->set( 'p', $post_id );
    $query->set( 'no_found_rows', true ); /* Delete this if you need pagination */
  }
}
add_action( 'pre_get_posts', 'dynamic_ids_query' );
  echo "has childs";
} else {
    // There is no child for this post
    echo "do not have childs";
	function dynamic_ids_query( $query ) {
	global $post;
    if ( $query->query['post_type'][0] == 'nabidka' ) {
	$parentpost_id = wp_get_post_parent_id( $post_ID );
    $query->set( 'p', $parentpost_id );
    $query->set( 'no_found_rows', true ); /* Delete this if you need pagination */
  }
}
add_action( 'pre_get_posts', 'dynamic_ids_query' );
}
?>
//repeater block

//code block after repeater
<?php
remove_action( 'pre_get_posts', 'dynamic_ids_query' );
?>

Display all posts with same ACF post object field value

Gets current post ID and look for posts connected to it by post object field from ACF.

//before repeater code block
<?php
function dynamic_query_hraci( $query ) {​​​​​​
  global $post;
  if ( $query->query['post_type'][0] == 'post' ) {​​​​​​
    $hrac = get_the_ID();
    
    $query->set( 'meta_query', array(
          array(
                'key' => 'hrac',
                'value' => $hrac,
                'compare' => '=',
        )));     
    
    $query->set( 'no_found_rows', true );
  }​​​​​​​​​​​​​
}​​​​​​​​​​​​​
 
add_action( 'pre_get_posts', 'dynamic_query_hraci' );
?>
//repeater
//after repeater code block
<?php
remove_action( 'pre_get_posts', 'dynamic_query_hraci' );
?>