26. Hooks and Filters -- Filters | Field Forge - Custom Fields, Built for Speed
Download Log in

26. Hooks and Filters — Filters

Developer Guide

Filters for transforming values, customizing paths, and extending location rules.

fieldforge/local_json/save_path

Change the directory where Local JSON files are saved.

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

Add additional directories to load JSON field groups from.

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

Filter a field value as it is loaded from the database. Runs before formatting.

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

Extend location rule matching with custom parameters.

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 );

Hooks Quick Reference

HookTypeParametersWhen
fieldforge/field_group_savedAction$group_id, $groupAfter group create/update
fieldforge/field_group_deletedAction$group_idBefore group delete
fieldforge/value_updatedAction$post_id, $field_nameAfter value insert/update
fieldforge/values_deletedAction$post_idAfter all values deleted
fieldforge/local_json/save_pathFilter$pathWhen saving JSON files
fieldforge/local_json/load_pathsFilter$pathsWhen loading JSON files
fieldforge/load_valueFilter$value, $field_name, $post_id, $rowWhen loading a value
fieldforge/match_location_ruleFilter$actual, $rule, $postWhen evaluating location rules

Forge AI Assistant Online

Hi! I'm the Field Forge AI assistant. Ask me anything about the plugin — setup, features, troubleshooting, or development.

Just now
Powered by Forge AI · Browse docs