#wordpress #advanced-custom-fields #buddypress
#wordpress #расширенные пользовательские поля #buddypress
Вопрос:
Новичок в PHP, ищу некоторые рекомендации. Я работаю с BuddyPress и расширенными пользовательскими полями (ACF). У меня есть поле ACF ‘new_user’ со значением true / false. Я пытаюсь отфильтровать цикл участников BuddyPress, чтобы отображать только пользователей со значением ‘new_user’ = true.
Здесь есть 2 примера кода.
- Стандартный цикл участников BP. Моя мысль здесь в том, как мне сначала запросить своих пользователей с помощью ACF ‘new_user’ = true, а затем запустить цикл участника bp?:
if ( bp_has_members() ) :
// some code goes here
endif;
while ( bp_members() ) : bp_the_member();
//OUTPUT MEMBERS LIST HERE
endwhile;
-
Это функция BP для фильтрации по расширенным пользовательским полям Buddypress. Идея здесь, я полагаю, состоит в том, чтобы заменить код в середине, специфичный для xprofile_get_field, соответствующим кодом ACF:
функция my_custom_ids($field_name, $field_value = «) {
if ( empty( $field_name ) ) return ''; global $wpdb; $field_id = xprofile_get_field_id_from_name( $field_name ); if ( !empty( $field_id ) ) $query = "SELECT user_id FROM " . $wpdb->prefix . "bp_xprofile_data WHERE field_id = " . $field_id; else return ''; if ( $field_value != '' ) $query .= " AND value LIKE '%" . $field_value . "%'"; /* LIKE is slow. If you're sure the value has not been serialized, you can do this: $query .= " AND value = '" . $field_value . "'"; */ $custom_ids = $wpdb->get_col( $query ); if ( !empty( $custom_ids ) ) { // convert the array to a csv string $custom_ids_str = 'include=' . implode(",", $custom_ids); return $custom_ids_str; } else return ''; }
Конечно, я открыт для решения этой проблемы и другим способом. Надеюсь, это понятно.