Intereting Posts
Можно ли удалить изображение из галереи, не удаляя его из медиа-библиотеки? Загрузить настройки настроек загрузки при загрузке wp.media через javascript Добавить крестик в тег SCRIPT Как вы получаете идентификатор текущего элемента меню? Переведите дочернюю тему с помощью чистого PHP и gettext Предупреждать пользователя о том, что данные могут быть потеряны для пользовательских страниц Включение коротких кодов в пользовательском типе сообщений Страница блога Ошибка сервера 500 с циклом post post в файле query.php Использование WP_Query для повторного запроса и сортировки результатов с использованием даты? Сортировка таксономии в алфавитном порядке по мета-позиции, а не по умолчанию Добавление нескольких неполадок типа сообщения Является ли wp_remote_get REST основанным? Статическое кэширование HTML-страниц для большого веб-сайта Получение двух версий CSS WP-REST API не возвращает все свои конечные точки, 404 – на задокументированных конечных точках

WP User Query с пользовательскими полями и результатами поиска

Я пытаюсь запустить поиск, который сортируется через профиль пользователя с прикрепленными дополнительными настраиваемыми полями. Я использую запрос пользователя WP. Одно из моих полей, которое я ищу, – это поле ретранслятора (business_information) и его подполя (business_name).

Я использую информацию, представленную на этой странице документации ACF, # 4 Sub Custom Field Values

Итак, мои переменные выглядят так:

function my_posts_where( $where ) { $where = str_replace("meta_key = 'business_information_%", "meta_key LIKE 'business_information_%", $where); return $where; } add_filter('posts_where', 'my_posts_where'); if( !empty( $_GET['usersearch'] ) ){ $usersearch = stripslashes( trim($_GET['usersearch']) ); // WP_User_Query arguments $args = array( 'role' => 'Subscriber', 'meta_query' => array( array( 'key' => 'membership_class', 'value' => 'Full', 'compare' => '=', 'type' => 'CHAR', ), array( 'relation' => 'OR', array( 'key' => 'first_name', 'value' => $usersearch, 'compare' => 'LIKE' ), array( 'key' => 'last_name', 'value' => $usersearch, 'compare' => 'LIKE' ), array( 'key' => 'personal_city', 'value' => $usersearch, 'compare' => 'LIKE', 'type' => 'CHAR', ), array( 'key' => 'personal_province', 'value' => $usersearch, 'compare' => 'LIKE', 'type' => 'CHAR', ), array( 'key' => 'treatments', 'value' => $usersearch, 'compare' => 'LIKE', ), array( 'key' => 'business_information_%_business_name', 'value' => $usersearch, 'compare' => 'LIKE', ), ), ), ); 

Выход запроса:

 SELECT DISTINCT SQL_CALC_FOUND_ROWS wp_users.* FROM wp_users INNER JOIN wp_usermeta ON ( wp_users.ID = wp_usermeta.user_id ) INNER JOIN wp_usermeta AS mt1 ON ( wp_users.ID = mt1.user_id ) INNER JOIN wp_usermeta AS mt2 ON ( wp_users.ID = mt2.user_id ) WHERE 1=1 AND ( ( ( ( wp_usermeta.meta_key = 'membership_class' AND wp_usermeta.meta_value = 'Full' ) AND ( ( mt1.meta_key = 'first_name' AND mt1.meta_value LIKE '%name%' ) OR ( mt1.meta_key = 'last_name' AND mt1.meta_value LIKE '%name%' ) OR ( mt1.meta_key = 'personal_city' AND mt1.meta_value LIKE '%name%' ) OR ( mt1.meta_key = 'personal_province' AND mt1.meta_value LIKE '%name%' ) OR ( mt1.meta_key = 'treatments' AND mt1.meta_value LIKE '%name%' ) OR ( mt1.meta_key = 'business_information_%_business_name' AND mt1.meta_value LIKE '%name%' ) ) ) AND ( ( ( mt2.meta_key = 'wp_capabilities' AND mt2.meta_value LIKE '%\"Subscriber\"%' ) ) ) ) ) ORDER BY user_login ASC 

Теперь я буду первым, кто признает, что я не знаю, что, черт возьми, я делаю, но остальные поисковые запросы работают именно так, как я хочу. Это поле бизнес-ретранслятора, которое не попадает в поисковый запрос должным образом. Из того, что я понимаю, вышеуказанная функция должна заменять эту часть запроса db, но это не так, и у меня нет идеи, почему и как заставить ее работать, или то, на что она должна на самом деле выглядеть конец. Я был вверх и вниз по Google, и я просто не могу найти ответ. Все кажется связанным с сообщениями, а не с пользователями, и мне интересно, если это мое зависание? Кто-нибудь знает что-нибудь, что может помочь?