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