acf/shortcode/prevent_access

Описание

Позволяет ограничить поля, которые может вывести 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