PluginProbe ʕ •ᴥ•ʔ
Advanced Custom Fields (ACF®) / 6.8.9
Advanced Custom Fields (ACF®) v6.8.9
6.8.9 6.8.8 6.8.7 6.8.6 6.8.5 6.8.4 6.8.3 6.8.2 6.8.1 5.8.5 5.8.6 5.8.7 5.8.8 5.8.9 5.9.0 5.9.1 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9 6.0.0 6.0.1 6.0.2 6.0.3 6.0.4 6.0.5 6.0.6 6.0.7 6.1.0 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.1.6 6.1.7 6.1.8 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.2.6 6.2.6.1 6.2.7 6.2.8 6.2.9 6.3.0 6.3.1 6.3.10.2 6.3.11 6.3.12 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.6.1 6.4.0 6.4.0.1 6.4.1 6.4.2 6.4.3 6.5.0 6.5.1 6.6.0 6.6.1 6.6.2 6.7.0 6.7.1 6.7.2 6.8.0 trunk 1.0.0 1.0.2 1.0.3 1.0.5 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.1.1 2.1.3 2.1.4 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.6 3.0.7 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.5.7 3.5.8 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.8 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.8 4.3.9 4.4.0 4.4.1 4.4.10 4.4.11 4.4.12 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 5.10 5.10.1 5.10.2 5.11 5.11.1 5.11.2 5.11.3 5.11.4 5.12 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.6.10 5.6.2 5.6.3 5.6.4 5.6.5 5.6.6 5.6.7 5.6.8 5.6.9 5.7.0 5.7.1 5.7.10 5.7.12 5.7.13 5.7.2 5.7.3 5.7.4 5.7.5 5.7.6 5.7.7 5.7.8 5.7.9 5.8.0 5.8.1 5.8.10 5.8.11 5.8.12 5.8.13 5.8.14 5.8.2 5.8.3 5.8.4
advanced-custom-fields / src / Blocks / Bindings.php
advanced-custom-fields / src / Blocks Last commit date
Bindings.php 3 months ago index.php 1 year ago
Bindings.php
99 lines
1 <?php
2 /**
3 * @package ACF
4 * @author WP Engine
5 *
6 * © 2026 Advanced Custom Fields (ACF®). All rights reserved.
7 * "ACF" is a trademark of WP Engine.
8 * Licensed under the GNU General Public License v2 or later.
9 * https://www.gnu.org/licenses/gpl-2.0.html
10 */
11
12 namespace ACF\Blocks;
13
14 // Exit if accessed directly.
15 defined( 'ABSPATH' ) || exit;
16
17 /**
18 * The core ACF Blocks binding class.
19 */
20 class Bindings {
21 /**
22 * Block Bindings constructor.
23 */
24 public function __construct() {
25 // Final check we're on WP 6.5 or newer.
26 if ( ! function_exists( 'register_block_bindings_source' ) ) {
27 return;
28 }
29
30 add_action( 'acf/init', array( $this, 'register_binding_sources' ) );
31 }
32
33 /**
34 * Hooked to acf/init, register our binding sources.
35 */
36 public function register_binding_sources() {
37 if ( acf_get_setting( 'enable_block_bindings' ) ) {
38 register_block_bindings_source(
39 'acf/field',
40 array(
41 'label' => _x( 'Custom Fields', 'The core ACF block binding source name for fields on the current page', 'acf' ),
42 'get_value_callback' => array( $this, 'get_value' ),
43 )
44 );
45 }
46 }
47
48 /**
49 * Handle returing the block binding value for an ACF meta value.
50 *
51 * @since 6.2.8
52 *
53 * @param array $source_attrs An array of the source attributes requested.
54 * @param \WP_Block $block_instance The block instance.
55 * @param string $attribute_name The block's bound attribute name.
56 * @return string|null The block binding value or an empty string on failure.
57 */
58 public function get_value( array $source_attrs, \WP_Block $block_instance, string $attribute_name ) {
59 if ( ! isset( $source_attrs['key'] ) || ! is_string( $source_attrs['key'] ) ) {
60 $value = '';
61 } else {
62 $field = get_field_object( $source_attrs['key'], false, true, true, true );
63
64 if ( ! $field ) {
65 return '';
66 }
67
68 if ( ! acf_field_type_supports( $field['type'], 'bindings', true ) ) {
69 if ( is_preview() ) {
70 return apply_filters( 'acf/bindings/field_not_supported_message', '[' . esc_html__( 'The requested ACF field type does not support output in Block Bindings or the ACF shortcode.', 'acf' ) . ']' );
71 } else {
72 return '';
73 }
74 }
75
76 if ( isset( $field['allow_in_bindings'] ) && ! $field['allow_in_bindings'] ) {
77 if ( is_preview() ) {
78 return apply_filters( 'acf/bindings/field_not_allowed_message', '[' . esc_html__( 'The requested ACF field is not allowed to be output in bindings or the ACF Shortcode.', 'acf' ) . ']' );
79 } else {
80 return '';
81 }
82 }
83
84 $value = $field['value'];
85
86 if ( is_array( $value ) ) {
87 $value = implode( ', ', $value );
88 }
89
90 // If we're not a scalar we'd throw an error, so return early for safety.
91 if ( ! is_scalar( $value ) ) {
92 $value = null;
93 }
94 }
95
96 return apply_filters( 'acf/blocks/binding_value', $value, $source_attrs, $block_instance, $attribute_name );
97 }
98 }
99