26. Хуки та фільтри -- Фільтри | Field Forge - Кастомні поля, створені для швидкості
Завантажити Увійти

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

Фільтри для перетворення значень, налаштування шляхів та розширення правил розташування.

fieldforge/local_json/save_path

Змініть каталог, де зберігаються локальні 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 · Переглянути документацію