Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save champsupertramp/fa0a6b620b0da00be58a6b5c404553ec to your computer and use it in GitHub Desktop.
Save champsupertramp/fa0a6b620b0da00be58a6b5c404553ec to your computer and use it in GitHub Desktop.
Ultimate Member - Show all options in the Member Directory filter and Admin filter settings
add_action( 'wp_ajax_um_member_directory_default_filter_settings', 'um_04292024_show_ajax_member_directory', 1 );
function um_04292024_show_ajax_member_directory() {
add_filter( 'um_member_directory_filter_select_options', 'um_04292024_show_all_select_options', 999999, 3 );
}
function um_04292024_show_all_select_options( $options, $options_arr, $data ) {
$key = $data['metakey'];
$options = UM()->builtin()->get_a_field( $key )['options'];
$data['options'] = $options;
$has_parent_option = false;
if ( isset( $data['options'] ) && is_array( $data['options'] ) ) {
$options = $data['options'];
}
if ( ! empty( $data['parent_dropdown_relationship'] ) ) {
$has_parent_option = true;
}
// Child dropdown
if ( $has_parent_option ) {
if ( ! empty( $data['custom_dropdown_options_source'] ) && function_exists( $data['custom_dropdown_options_source'] ) ) {
if ( ! UM()->member_directory()->is_source_blacklisted( $data['custom_dropdown_options_source'] ) ) {
$options = call_user_func( $data['custom_dropdown_options_source'], $data['parent_dropdown_relationship'] );
}
}
}
if ( ! $has_parent_option ) {
if ( isset( $options ) && 'builtin' === $options ) {
$options = UM()->builtin()->get( $data['filter'] );
}
// 'country'
if ( 'country' === $key && empty( $options ) ) {
$options = UM()->builtin()->get( 'countries' );
} elseif ( empty( $options ) && isset( $data['options'] ) ) {
$options = $data['options'];
}
/**
* Filters dropdown options.
*
* @since 2.0
* @hook um_selectbox_options
*
* @param {array} $options Field options.
* @param {string} $key Field metakey.
*
* @return {array} Field options.
*
* @example <caption>Extend dropdown options.</caption>
* function my_um_selectbox_options( $options, $key ) {
* // your code here
* return $options;
* }
* add_filter( 'um_selectbox_options', 'my_um_selectbox_options', 10, 2 );
*/
$options = apply_filters( 'um_selectbox_options', $options, $key );
if ( isset( $options ) ) {
/**
* Filters dropdown dynamic options.
*
* @since 1.3.x
* @hook um_select_dropdown_dynamic_options
*
* @param {array} $options Dynamic options.
* @param {array} $data Field Data.
*
* @return {array} Dynamic options.
*
* @example <caption>Extend dropdown dynamic options.</caption>
* function my_select_dropdown_dynamic_options( $options, $data ) {
* // your code here
* return $options;
* }
* add_filter( 'um_select_dropdown_dynamic_options', 'my_select_dropdown_dynamic_options', 10, 2 );
*/
$options = apply_filters( 'um_select_dropdown_dynamic_options', $options, $data );
/**
* Filters dropdown dynamic options by field $key.
*
* @since 1.3.x
* @hook um_select_dropdown_dynamic_options_{$key}
*
* @param {array} $options Dynamic options.
*
* @return {array} Dynamic options.
*
* @example <caption>Extend dropdown dynamic options by field $key.</caption>
* function my_select_dropdown_dynamic_options( $options ) {
* // your code here
* return $options;
* }
* add_filter( 'um_select_dropdown_dynamic_options_{$key}', 'my_select_dropdown_dynamic_options', 10, 1 );
*/
$options = apply_filters( "um_select_dropdown_dynamic_options_{$key}", $options );
}
}
if ( 'role' === $key ) {
$options = UM()->member_directory()->get_available_roles( $key, $options );
}
return $options;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment