FlexStructure.php
1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
namespace ACA\ACF\Value\Formatter;
use ACA\ACF\Value\Formatter;
class FlexStructure extends Formatter {
public function format( $values, $id = null ) {
$results = [];
$labels = $this->get_layout_labels();
$i = 0;
while ( have_rows( $this->field->get_meta_key(), $id ) ) {
the_row();
$title = $labels[ get_row_layout() ];
$acf_layout = $this->get_layout_by_name( get_row_layout() );
$title = apply_filters( 'acf/fields/flexible_content/layout_title', $title, $this->field->get_settings(), $acf_layout, $i );
$title = apply_filters( "acf/fields/flexible_content/layout_title/key={$this->field->get_hash()}", $title, $this->field->get_settings(), $acf_layout, $i );
$title = apply_filters( "acf/fields/flexible_content/layout_title/name={$this->field->get_meta_key()}", $title, $this->field->get_settings(), $acf_layout, $i );
$results[] = '[ ' . $title . ' ]';
$i++;
}
return empty( $results )
? $this->column->get_empty_char()
: implode( '<br>', $results );
}
/**
* @return array
*/
private function get_layout_labels() {
$labels = [];
foreach ( $this->field->get_layouts() as $layout ) {
$labels[ $layout['name'] ] = $layout['label'];
}
return $labels;
}
/**
* @param $name
*
* @return string|false
*/
private function get_layout_by_name( $name ) {
foreach ( $this->field->get_layouts() as $layout ) {
if ( $name === $layout['name'] ) {
return $layout;
}
}
return false;
}
}