Function Reference: geodir_buddypress_get_bp_listings
Summary
Query listings to display on member profile.
Global Values
- $wpdb
- (object) (required) WordPress Database object.
- Default: None
- $plugin_prefix
- (string) (required) Geodirectory plugin table prefix.
- Default: None
- $table_prefix
- (string) (required) WordPress Database Table prefix.
- Default: None
- $geodir_post_type
- (string) (required) Post type.
- Default: None
- $table
- (string) (required) Listing table name.
- Default: None
- $paged
- (int) (required) Global variable contains the page number of a listing of posts.
- Default: None
Package
GeoDirectory_BuddyPress_Integration
Parameters
- $query_args
- (array) (required) Query args.
- Default: None
Return Values
- (int|mixed)
- Query results.
Change Log
Since: 1.0.0
Filters
‘geodir_filter_bp_listings_fields’ [Line: 1146]
‘geodir_filter_bp_listings_join’ [Line: 1166]
‘geodir_filter_bp_listings_where’ [Line: 1193]
‘geodir_filter_bp_listings_groupby’ [Line: 1197]
‘geodir_buddypress_posts_orderby’ [Line: 1199]
‘geodir_filter_bp_listings_orderby’ [Line: 1200]
‘geodir_filter_widget_listings_limit’ [Line: 1216]
Source File
geodir_buddypress_get_bp_listings() is located in geodir_buddypress/includes/gdbuddypress_functions.php [Line: 1133]
Source Code
function geodir_buddypress_get_bp_listings( $query_args = array() ) { global $wpdb, $plugin_prefix, $table_prefix, $geodir_post_type, $table, $paged; $current_geodir_post_type = $geodir_post_type; $current_table = $table; $GLOBALS['gd_query_args_bp'] = $query_args; $gd_query_args_widgets = $query_args; $post_type = $query_args['post_type']; $geodir_post_type = $post_type; $table = $plugin_prefix . $post_type . '_detail'; $fields = $wpdb->posts . ".*, " . $table . ".*"; $fields = apply_filters( 'geodir_filter_bp_listings_fields', $fields, $table, $post_type ); $join = "INNER JOIN " . $table ." ON (" . $table .".post_id = " . $wpdb->posts . ".ID)"; if ( $post_type == 'gd_event' && defined( 'EVENT_SCHEDULE' ) ) { $fields .= ", " . EVENT_SCHEDULE . ".*"; $join .= " INNER JOIN " . EVENT_SCHEDULE ." ON (" . EVENT_SCHEDULE .".event_id = " . $wpdb->posts . ".ID)"; } ########### WPML ########### if ( function_exists( 'icl_object_id' ) ) { global $sitepress; $lang_code = ICL_LANGUAGE_CODE; $default_lang_code = $sitepress->get_default_language(); if( $lang_code ) { $join .= " JOIN ".$table_prefix."icl_translations icl_t ON icl_t.element_id = ".$table_prefix."posts.ID"; } } ########### WPML ########### $join = apply_filters( 'geodir_filter_bp_listings_join', $join, $post_type ); $post_status = is_super_admin() ? " OR " . $wpdb->posts . ".post_status = 'private'" : ''; if ( bp_loggedin_user_id() && bp_displayed_user_id() == bp_loggedin_user_id() ) { $post_status .= " OR " . $wpdb->posts . ".post_status = 'draft' OR " . $wpdb->posts . ".post_status = 'private'"; } $where = " AND ( " . $wpdb->posts . ".post_status = 'publish' " . $post_status . " ) AND " . $wpdb->posts . ".post_type = '" . $post_type . "'"; // filter favorites if ( isset( $query_args['filter_favorite'] ) && $query_args['filter_favorite'] == 1 ) { $user_fav_posts = get_user_meta( (int)bp_displayed_user_id(), 'gd_user_favourite_post', true ); $user_fav_posts = !empty( $user_fav_posts ) ? implode( "','", $user_fav_posts ) : "-1"; $where .= " AND " . $wpdb->posts . ".ID IN ('" . $user_fav_posts . "')"; } else { $where .= " AND " . $wpdb->posts . ".post_author = " . (int)bp_displayed_user_id(); } ########### WPML ########### if ( function_exists( 'icl_object_id' ) ) { if ( $lang_code ) { $where .= " AND icl_t.language_code = '$lang_code' "; } } ########### WPML ########### $where = apply_filters( 'geodir_filter_bp_listings_where', $where, $post_type ); $where = $where != '' ? " WHERE 1=1 " . $where : ''; $groupby = " GROUP BY $wpdb->posts.ID "; $groupby = apply_filters( 'geodir_filter_bp_listings_groupby', $groupby, $post_type ); $orderby = apply_filters( 'geodir_buddypress_posts_orderby', '' ); $orderby = apply_filters( 'geodir_filter_bp_listings_orderby', $orderby, $table, $post_type ); $orderby = $orderby != '' ? " ORDER BY " . $orderby : ''; $posts_per_page = !empty( $query_args['posts_per_page'] ) ? $query_args['posts_per_page'] : 5; // Paging $limit = ''; if ( $posts_per_page > 0 ) { $page = absint( $paged ); if ( !$page ) { $page = 1; } $pgstrt = absint( ( $page - 1 ) * $posts_per_page ) . ', '; $limit = " LIMIT " . $pgstrt . $posts_per_page; } $limit = apply_filters( 'geodir_filter_widget_listings_limit', $limit, $posts_per_page, $post_type ); if ( isset( $query_args['count_only'] ) && !empty( $query_args['count_only'] ) ) { $fields = $wpdb->posts . ".ID"; $orderby = ""; $limit = ""; } $sql = "SELECT SQL_CALC_FOUND_ROWS " . $fields . " FROM " . $wpdb->posts . " " . $join . " " . $where . " " . $groupby . " " . $orderby . " " . $limit; //echo 'sql : '; print_r($sql); echo '';// exit;
$rows = $wpdb->get_results($sql);
if ( isset( $query_args['count_only'] ) && !empty( $query_args['count_only'] ) ) {
$rows = !empty( $rows ) ? count( $rows ) : 0;
}unset( $GLOBALS['gd_query_args_bp'] );
unset( $gd_query_args_bp );global $geodir_post_type, $table;
$geodir_post_type = $current_geodir_post_type;
$table = $current_table;return $rows;
}