26. Хуки и фильтры -- Фильтры | Field Forge - Произвольные поля, созданные для скорости
Скачать Войти

26. Хуки и фильтры — Фильтры

Фильтры для преобразования значений, настройки путей и расширения правил местоположения.

fieldforge/local_json/save_path

Изменить директорию, в которой сохраняются файлы Local JSON.

php
/**
 * @param string $path Default: get_stylesheet_directory() . '/fieldforge-json'
 * @return string Absolute path.
 */
add_filter( 'fieldforge/local_json/save_path', function( $path ) {
    return WP_CONTENT_DIR . '/fieldforge-json';
} );

fieldforge/local_json/load_paths

Добавить дополнительные директории для загрузки групп полей JSON из.

php
/**
 * @param string[] $paths Default: [child_theme/fieldforge-json, parent_theme/fieldforge-json]
 * @return string[]
 */
add_filter( 'fieldforge/local_json/load_paths', function( $paths ) {
    $paths[] = MY_PLUGIN_DIR . '/fieldforge-json';
    return $paths;
} );

fieldforge/load_value

Фильтровать значение поля по мере его загрузки из базы данных. Выполняется перед форматированием.

php
/**
 * @param mixed  $value      The raw value from DB.
 * @param string $field_name The field name.
 * @param int    $post_id    The post ID.
 * @param object $row        The raw database row.
 * @return mixed The filtered value.
 */
add_filter( 'fieldforge/load_value', function( $value, $field_name, $post_id, $row ) {
    // Auto-decrypt sensitive fields
    if ( $field_name === 'api_key' && $value ) {
        return my_decrypt_function( $value );
    }

    // Provide a default for empty fields
    if ( $field_name === 'accent_color' && empty( $value ) ) {
        return '#3b82f6';
    }

    return $value;
}, 10, 4 );

fieldforge/match_location_rule

Расширить соответствие правил местоположения с помощью пользовательских параметров.

php
/**
 * @param string  $actual The resolved actual value.
 * @param array   $rule   The rule definition.
 * @param WP_Post $post   The post being evaluated.
 * @return string The actual value to compare.
 */
add_filter( 'fieldforge/match_location_rule', function( $actual, $rule, $post ) {
    if ( $rule['param'] === 'post_author_role' ) {
        $author = get_userdata( $post->post_author );
        return $author ? $author->roles[0] : '';
    }
    return $actual;
}, 10, 3 );

Быстрая справка по хукам

ХукТипПараметрыКогда
fieldforge/field_group_savedДействие$group_id, $groupПосле создания/обновления группы
fieldforge/field_group_deletedДействие$group_idПеред удалением группы
fieldforge/value_updatedДействие$post_id, $field_nameПосле вставки/обновления значения
fieldforge/values_deletedДействие$post_idПосле удаления всех значений
fieldforge/local_json/save_pathФильтр$pathПри сохранении JSON файлов
fieldforge/local_json/load_pathsФильтр$pathsПри загрузке JSON файлов
fieldforge/load_valueФильтр$value, $field_name, $post_id, $rowПри загрузке значения
fieldforge/match_location_ruleФильтр$actual, $rule, $postПри оценке правил местоположения

ИИ-ассистент Forge Онлайн

Привет! Я ИИ-ассистент Field Forge. Спрашивайте меня о чём угодно по плагину — настройка, возможности, устранение неполадок или разработка.

Только что
На базе Forge AI · Просмотр документации