Описание
Позволяет ограничить поля, которые может вывести ACF Shortcode. Если этот фильтр вернёт true, значение не будет выведено шорткодом.
История изменений
- Добавлено в версии 6.2.7
Параметры
apply_filters( 'acf/shortcode/prevent_access', $access_prevented, $atts, $decoded_post_id, $decoded_post_type, $field_type, $field )
$access_prevented(boolean) Текущее состояние запрета доступа. По умолчанию false; станет true, если другой фильтр уже запретил доступ к запрошенному значению поля.$atts(array) Полный массив атрибутов, переданных как часть шорткода. Этот массив, вероятно, содержитfieldсогласно документации по шорткоду$decoded_post_id(int|string) Это декодированный ID элемента, к которому выполняется обращение. Это может быть ID пользователя, ID терма, префикс страницы опций или любой другой ID любого места, где ACF может хранить данные; используйте вместе с$decoded_post_type, чтобы понять, какой именно.$decoded_post_type(string) Строка, содержащая тип запрашиваемого объекта. post, term, comment, option или user$field_type(string) Строка с слагом типа поля, который выводится. Например,textилиtext_area$field(array) Полный массив объекта поля, включая его значение.
Пример: запрет доступа к страницам опций
В этом примере ACF Shortcode не выводит значения, сохранённые на странице опций.
functions.php
<?php
function my_acf_prevent_access_to_options( $access_prevented, $atts, $decoded_post_id, $decoded_post_type ) {
if ( 'option' === $decoded_post_type ) {
return true;
}
return $access_prevented;
}
add_filter( 'acf/shortcode/prevent_access', 'my_acf_prevent_access_to_options', 10, 4 );
Пример: запрет доступа к значениям полей в приватных записях
В этом примере ACF Shortcode не выводит значения, сохранённые в записи, которая не доступна для публичного просмотра.
Обратите внимание: начиная с ACF 6.3.4, такое поведение стало поведением по умолчанию.
functions.php
<?php
function my_acf_prevent_access_to_fields_on_private_posts( $access_prevented, $atts, $decoded_post_id, $decoded_post_type ) {
if ( 'post' === $decoded_post_type && ! is_post_publicly_viewable( $decoded_post_id ) ) {
return true;
}
return $access_prevented;
}
add_filter( 'acf/shortcode/prevent_access', 'my_acf_prevent_access_to_fields_on_private_posts', 10, 4 );
Пример: запрет доступа ко всем полям, кроме “my_field_name”
В этом примере ACF Shortcode не выводит никакие значения, кроме поля “my_field_name”.
functions.php
<?php
function my_acf_prevent_access_to_all_but_one_field( $access_prevented, $atts, $decoded_post_id, $decoded_post_type, $field_type, $field_array ) {
if ( 'my_field_name' === $field_array['name'] ) {
return false;
}
return true;
}
add_filter( 'acf/shortcode/prevent_access', 'my_acf_prevent_access_to_all_but_one_field', 10, 6 );
Обновлено: 02.06.2026