protected function render_repeater_row() {
		$layouts = $this->get_settings_layouts();
		$values  = $this->get_value();

		// Fetch all slugs in all layouts.
		$slugs = [];
		foreach ( $layouts as $index => $layout ) {
			foreach ( $layout['items'] as $item ) {
				$slugs[] = unpapify( $item->slug );
			}
		}

		// Remove values that don't exists in the slugs array.
		foreach ( $values as $index => $row ) {
			$keys = array_keys( $row );

			foreach ( array_keys( $row ) as $slug ) {
				if ( in_array( $slug, $keys, true ) || papi_is_property_type_key( $slug ) || $this->is_layout_key( $slug ) ) {
					continue;
				}

				unset( $values[$index][$slug] );
			}
		}

		$values      = array_filter( $values );
		$closed_rows = $this->get_setting( 'closed_rows', true );

		foreach ( $values as $index => $row ):
			?>

			<tr <?php echo $closed_rows ? 'class="closed"' : ''; ?>>
				<td class="handle">
					<span class="toggle"></span>
					<span class="count"><?php echo esc_html( $this->counter + 1 ); ?></span>
				</td>
				<?php
				foreach ( $layouts as $layout ) {
					// Don't render layouts that don't have a valid value in the database.
					if ( ! isset( $row[$this->layout_key] ) || $layout['slug'] !== $this->get_layout_value( $row[$this->layout_key] ) ) {
						continue;
					}

					// Render all properties in the layout
					$this->render_properties( $layout['items'], $row );
				}

				$this->counter ++;
				?>
				<td class="last">
					<span>
						<a title="<?php esc_html_e( 'Remove', 'papi' ); ?>" href="#" class="repeater-remove-item">x</a>
					</span>
				</td>
			</tr>

			<?php
		endforeach;
	}
protected function render_repeater_row() {
		$layouts = $this->get_settings_layouts();
		$values  = $this->get_value();

		// Fetch all slugs in all layouts.
		$slugs = [];
		foreach ( $layouts as $index => $layout ) {
			foreach ( $layout['items'] as $item ) {
				$slugs[] = unpapify( $item->slug );
			}
		}

		// Remove values that don't exists in the slugs array.
		foreach ( $values as $index => $row ) {
			$keys = array_keys( $row );

			foreach ( array_keys( $row ) as $slug ) {
				if ( in_array( $slug, $keys, true ) || papi_is_property_type_key( $slug ) || $this->is_layout_key( $slug ) ) {
					continue;
				}

				unset( $values[$index][$slug] );
			}
		}

		$values      = array_filter( $values );
		$closed_rows = $this->get_setting( 'closed_rows', true );

		foreach ( $values as $index => $row ):
			?>

			<tr <?php echo $closed_rows ? 'class="closed"' : ''; ?>>
				<td class="handle">
					<span class="toggle"></span>
					<span class="count"><?php echo esc_html( $this->counter + 1 ); ?></span>
				</td>
				<?php
				foreach ( $layouts as $layout ) {
					// Don't render layouts that don't have a valid value in the database.
					if ( ! isset( $row[$this->layout_key] ) || $layout['slug'] !== $this->get_layout_value( $row[$this->layout_key] ) ) {
						continue;
					}

					// Render all properties in the layout
					$this->render_properties( $layout['items'], $row );
				}

				$this->counter ++;
				?>
				<td class="last">
					<span>
						<a title="<?php esc_html_e( 'Remove', 'papi' ); ?>" href="#" class="repeater-remove-item">x</a>
					</span>
				</td>
			</tr>

			<?php
		endforeach;
	}
protected function render_repeater_row ( ) { $ layouts = $ this -> get_settings_layouts ( ) ; $ values = $ this -> get_value ( ) ; // Fetch all slugs in all layouts. $ slugs = [ ] ; foreach ( $ layouts as $ index => $ layout ) { foreach ( $ layout [ 'items' ] as $ item ) { $ slugs [ ] = unpapify ( $ item -> slug ) ; } } // Remove values that don't exists in the slugs array. foreach ( $ values as $ index => $ row ) { $ keys = array_keys ( $ row ) ; foreach ( array_keys ( $ row ) as $ slug ) { if ( in_array ( $ slug , $ keys , true ) || papi_is_property_type_key ( $ slug ) || $ this -> is_layout_key ( $ slug ) ) { continue ; } unset ( $ values [ $ index ] [ $ slug ] ) ; } } $ values = array_filter ( $ values ) ; $ closed_rows = $ this -> get_setting ( 'closed_rows' , true ) ; foreach ( $ values as $ index => $ row ) : ?>

			<tr <?php echo $ closed_rows ? 'class="closed"' : '' ; ?>>
				<td class="handle">
					<span class="toggle"></span>
					<span class="count"><?php echo esc_html ( $ this -> counter + 1 ) ; ?></span>
				</td>
				<?php foreach ( $ layouts as $ layout ) { // Don't render layouts that don't have a valid value in the database. if ( ! isset ( $ row [ $ this -> layout_key ] ) || $ layout [ 'slug' ] !== $ this -> get_layout_value ( $ row [ $ this -> layout_key ] ) ) { continue ; } // Render all properties in the layout $ this -> render_properties ( $ layout [ 'items' ] , $ row ) ; } $ this -> counter ++ ; ?>
				<td class="last">
					<span>
						<a title="<?php esc_html_e ( 'Remove' , 'papi' ) ; ?>" href="#" class="repeater-remove-item">x</a>
					</span>
				</td>
			</tr>

			<?php endforeach ; }
Render repeater row.
Render repeater row .