bp_filter_metaid_column_name( string $q )

Filter SQL query strings to swap out the ‘meta_id’ column.

Description

WordPress uses the meta_id column for commentmeta and postmeta, and so hardcodes the column name into its *_metadata() functions. BuddyPress, on the other hand, uses ‘id’ for the primary column. To make WP’s functions usable for BuddyPress, we use this just-in-time filter on ‘query’ to swap ‘meta_id’ with ‘id.

Parameters

$q

(Required) SQL query.

Return

(string)

Source

File: bp-core/bp-core-filters.php

function bp_filter_metaid_column_name( $q ) {
	/*
	 * Replace quoted content with __QUOTE__ to avoid false positives.
	 * This regular expression will match nested quotes.
	 */
	$quoted_regex = "/'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'/s";
	preg_match_all( $quoted_regex, $q, $quoted_matches );
	$q = preg_replace( $quoted_regex, '__QUOTE__', $q );

	$q = str_replace( 'meta_id', 'id', $q );

	// Put quoted content back into the string.
	if ( ! empty( $quoted_matches[0] ) ) {
		for ( $i = 0; $i < count( $quoted_matches[0] ); $i++ ) {
			$quote_pos = strpos( $q, '__QUOTE__' );
			$q = substr_replace( $q, $quoted_matches[0][ $i ], $quote_pos, 9 );
		}
	}

	return $q;
}

Changelog

Changelog
Version Description
BuddyPress 2.0.0 Introduced.

Questions?

We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.