Guides

BricksMembers Documentation

Find everything you need to set up, customize, and get the most out of BricksMembers — from quick-start guides to advanced features.

Quick Reference: BricksMembers API

Quick Reference: BricksMembers API
Pascal Basel
modified at February 9, 2026

Quick Reference: BricksMembers API

Quick reference for the most commonly used BricksMembers functions, hooks, and patterns.

Core Functions

// Get instances (CoreSystem, CoreHelper)
brm_core()              // Core system singleton
brm_helper()            // Core helper singleton

// User levels (prefer brm_add_user_level/brm_remove_user_level for integrations)
brm_core()->get_user_levels($user_id)
brm_add_user_level($user_id, $level_id)
brm_remove_user_level($user_id, $level_id)
brm_core()->set_user_levels($user_id, $level_ids)

// Content access
brm_user_can_access_content($user_id, $post_id)
brm_get_post_required_levels($post_id)
brm_add_post_level($post_id, $level_id)
brm_set_post_levels($post_id, $level_ids)

// Progress
brm_mark_content_completed($user_id, $post_id)
brm_is_content_completed($user_id, $post_id)
brm_get_completion_date($user_id, $post_id)

// Navigation (returns WP_Post objects or null)
brm_get_next_structure_item($post_id, $boundary)
brm_get_previous_structure_item($post_id, $boundary)
brm_get_structure_current_position($post_id, $target_level)
brm_get_boundary($post_id, $level_slug, $order = false)
brm_get_boundary_order($post_id, $level_slug)

// Levels
brm_get_all_levels()
brm_get_level_by_id($level_id)
brm_create_level($name, $description)
brm_delete_level($level_id)

Common Filters

// Filter redirect decision
add_filter('brm_should_apply_redirect', function($should, $post_id, $user_id) {
    return $should;
}, 10, 3);

// Filter user backfill batch size
add_filter('brm_unlocks_user_worker_posts_per_page', function($size) {
    return 150;
});

Common Actions

// User level actions
add_action('brm_user_level_added', function($user_id, $level_id) {
    // Level added
}, 10, 2);

add_action('brm_user_level_removed', function($user_id, $level_id) {
    // Level removed
}, 10, 2);

// Progress actions
add_action('brm_post_completed', function($user_id, $post_id) {
    // Post completed
}, 10, 2);

// Structure actions
add_action('brm_structure_totals_updated', function($structure_id) {
    // Totals updated
}, 10, 1);

Recompute System

// Unified recompute
brm_schedule_unified_recompute([
    'structures' => ['courses'],
    'spm' => true,
    'progress' => true,
    'drip' => true
]);

Debug Logging

// Enable debug logging
define('BRM_DEBUG', true);

// Log functions
brm_log_debug('Message', ['data' => $data]);
brm_log_info('Message', ['data' => $data]);
brm_log_warning('Message', ['data' => $data]);
brm_log_error('Message', ['data' => $data]);
brm_log_exception($exception, ['context' => $context]);

Webhooks

// Endpoint
POST /wp-json/bricksmembers/v1/webhook

Structures

// Get structures
brm_get_all_structures()
brm_get_structure_by_id($structure_id)

// Structure levels
brm_get_structure_levels($structure_id, $source = 'auto')

// Structure helpers
brm_get_structure_id_by_object($object_name, $type)
brm_get_object_level_index($object_name, $type, $structure_id)

Data Access

// Get user data
brm_core()->get_user_data($user_id)
brm_core()->get_user_completed_posts($user_id)

// Get post data
brm_core()->get_post_data($post_id)

// Update data
brm_update_post_data($post_id, $data)

Extensions & Events

// Subscribe to events (see 16-extensions-registry.html)
use BaselMedia\BricksMembers\Utilities\ExtensionRegistry;
use BaselMedia\BricksMembers\Core\Event;
ExtensionRegistry::subscribe( Event::ACCESS_GRANTED, function( Event $e ) { ... } );

// Mutate levels from integrations (emits events correctly)
brm_with_event_context( Event::TRIGGER_WEBHOOK, 'payment', function() use ( $uid, $lid ) {
    brm_add_user_level( $uid, $lid );
} );

Module Checks

// Check if modules enabled
brm_is_progress_enabled()
brm_is_drip_enabled()
get_option('brm_enable_protected_downloads')

// Get module config (PSR-4 class, no brm_ wrapper)
$config = \BaselMedia\BricksMembers\Utilities\ModuleConfig::getModuleConfig( false );
$config['progress_tracking']
$config['drip_system']
$config['protected_downloads']

// Drip functions (if enabled)
brm_drip_is_unlocked($user_id, $post_id)
brm_drip_service_get_status($user_id, $post_id)
brm_drip_is_time_ready($user_id, $post_id)
brm_drip_is_prereq_ready($user_id, $post_id)

// Protected downloads (if enabled)
brm_can_user_access_download($download_id)
brm_can_user_access_download_hybrid($download_id, $user_id)

// Profile page detection (if member_profiles enabled)
use BaselMedia\BricksMembers\Services\ProfilePageService;
ProfilePageService::get_instance()->resolve_user_id()           // Resolve user from cascade
ProfilePageService::get_instance()->detection_includes('url_param') // Check if method active
brm_get_tag_user_id()  // Used by {brm_user:*} tags: loop → profile service → current user
get_option('brm_profile_user_detection', 'url_param_author')    // Detection mode
get_option('brm_profile_url_param', 'user')                     // URL param name

Create

Start Building with BricksMembers

Create, sell, and manage your content without limits. BricksMembers gives you everything you need to build membership and LMS sites directly in Bricks Builder — fast and frustration-free.

Join the membership & LMS revolution now!

Get Started
Still have questions? We're here to help!