Index: bbp-includes/bbp-core-actions.php
--- bbp-includes/bbp-core-actions.php
+++ bbp-includes/bbp-core-actions.php
@@ -76,6 +76,7 @@
  */
 add_action( 'bbp_init', 'bbp_load_textdomain',         2   );
 add_action( 'bbp_init', 'bbp_setup_option_filters',    4   );
+add_action( 'bbp_init', 'bbp_setup_function_filters',  6   );
 add_action( 'bbp_init', 'bbp_register_post_types',     10  );
 add_action( 'bbp_init', 'bbp_register_post_statuses',  12  );
 add_action( 'bbp_init', 'bbp_register_taxonomies',     14  );
Index: bbp-includes/bbp-core-functions.php
--- bbp-includes/bbp-core-functions.php
+++ bbp-includes/bbp-core-functions.php
@@ -10,6 +10,102 @@
 // Exit if accessed directly
 if ( !defined( 'ABSPATH' ) ) exit;
 
+/** Function Map **************************************************************/
+
+/**
+ * Get the default function map
+ *
+ * @since bbPress (r3898)
+ * @return array Filtered option names and values
+ */
+function bbp_get_function_map() {
+
+	// Default function
+	return apply_filters( 'bbp_get_function_map', array(
+
+		/** User Meta *********************************************************/
+
+		'get_user_meta'    => 'get_user_meta',
+		'add_user_meta'    => 'add_user_meta',
+		'update_user_meta' => 'update_user_meta',
+		'delete_user_meta' => 'delete_user_meta',
+
+		/** Post Meta *********************************************************/
+
+		'get_post_meta'    => 'get_post_meta',
+		'add_post_meta'    => 'add_post_meta',
+		'update_post_meta' => 'update_post_meta',
+		'delete_post_meta' => 'delete_post_meta',
+
+		/** Blog Option *******************************************************/
+
+		'get_option'       => 'get_option',
+		'add_option'       => 'add_option',
+		'update_option'    => 'update_option',
+		'delete_option'    => 'delete_option',
+
+		/** Site Option *******************************************************/
+
+		'get_site_option'    => 'get_site_option',
+		'add_site_option'    => 'add_site_option',
+		'update_site_option' => 'update_site_option',
+		'delete_site_option' => 'delete_site_option'
+
+	) );
+}
+
+/**
+ * Add filters to each mapped function and allow them to be overloaded from
+ * inside the $bbp->functions array.
+ *
+ * @since bbPress (r3898)
+ * @uses bbp_get_function_map() To get default functions
+ * @uses add_filter() To add filters to 'pre_option_{$key}'
+ * @uses do_action() Calls 'bbp_add_function_filters'
+ */
+function bbp_setup_function_filters() {
+
+	// Add filters to each bbPress option
+	foreach ( bbp_get_function_map() as $key => $value )
+		add_filter( 'bbp_pre_function_' . $key, 'bbp_pre_get_function' );
+
+	// Allow previously activated plugins to append their own options.
+	do_action( 'bbp_setup_function_filters' );
+}
+
+/**
+ * Filter default functions and allow them to be overloaded from inside the
+ * $bbp->functions array.
+ *
+ * @since bbPress (r3898)
+ * @param bool $value Optional. Default value false
+ * @return mixed false if not overloaded, mixed if set
+ */
+function bbp_pre_get_function( $value = false ) {
+	$bbp = bbpress();
+
+	// Remove the filter prefix
+	$function = str_replace( 'bbp_pre_function_', '', current_filter() );
+
+	// Check the options global for preset value
+	if ( !empty( $bbp->functions[$function] ) )
+		$value = $bbp->functions[$function];
+
+	// Always return a value, even if false
+	return $value;
+}
+
+/**
+ * Get the function to call given a certain circumstance.
+ *
+ * @since bbPress (r3898)
+ * @param string $name The function to call
+ * @return string The function that will be called
+ */
+function bbp_get_function( $name = false ) {
+	return apply_filters( 'bbp_pre_function_' . $name, $name );
+}
+
 /** Versions ******************************************************************/
 
 /**
