Intereting Posts
Могу ли я проверить, какие пользователи запускали какие обновления? Пользовательский тип кнопки меню Поверните необработанный URL-адрес в интерактивные ссылки Как прикреплять изображения к сообщению без их вставки? Экспорт таблицы WordPress в CSV со страницы Запуск сценария jquery после короткого кода Как получить только заголовок из wp_get_attachment_image Удалить поле из цветового кода градиента CSS Получение значения из таблицы базы данных в зависимости от значения поля Отсутствует wp-load.php при новой установке метод woocommerce для предварительного просмотра электронной почты для заказа, avilable hook Связанные теги Concept Сохранение идентификатора сообщения для использования в форме в другом месте на веб-сайте Как перезагрузить определенную регистрационную форму роли на ошибках проверки? Созданный виджет не отображается на панели администратора

Использование объекта $ wpdb в виджетах

Я пытаюсь сделать очень простой виджет, который поддерживает таблицы, содержащиеся в том же экземпляре базы данных, что и моя база данных WordPress, но не таблицы WordPress. Я использую класс wpdb в соответствии с кодом . Я не получаю никаких ошибок, но я также не получаю никаких результатов.

Я использую объект соответствующим образом? Или я должен перематывать свой собственный класс доступа для своих собственных таблиц?

Вот код виджета:

function widget ($args,$instance) { extract($args); global $wpdb; $title = $instance['title']; $catid = $instance['catid']; $current_user = wp_get_current_user(); $sql = 'SELECT max(ID) as MaxID, status FROM Clients WHERE UserID = '.$current_user->ID; $clientRow = $wpdb->get_results($sql); $out = '<div style="text-align: center; border: solid 1px Navy; background-color: #E4E4E4">'; $out .= '<span>Client status: '.$clientRow->status.'</span></div>'; echo $before_widget; echo $before_title.$title.$after_title; echo $out; echo $after_widget; } 

Заранее спасибо.

Если вам действительно нужна только одна строка, вместо этого используйте $wpdb->get_row($sql) .

Но ваш запрос выглядит забавным … похоже, вы пытаетесь получить последний «статус клиента» для пользователя, и в этом случае ваш запрос должен быть:
'SELECT status FROM Clients WHERE UserID = '.$current_user->ID.' ORDER BY ID DESC LIMIT 1' 'SELECT status FROM Clients WHERE UserID = '.$current_user->ID.' ORDER BY ID DESC LIMIT 1' .

И если вы это сделаете, вы можете использовать $status = $wpdb->get_var($sql); ,

Наконец … вы считали вместо этого использование add_user_meta / get_user_meta? Существует множество преимуществ использования собственных таблиц и функций, например, при очистке записей при удалении пользователя и т.п.

$wpdb->get_results() возвращает несколько строк в виде массива объектов (или массива массивов, в зависимости от параметра $output ). Вы хотите $wpdb->get_row() .

Ваши результаты вернутся как массив объектов, а не особый объект.

Эта строка рассматривает результат как объект.

 $clientRow->status 

Когда на самом деле у вас есть массив с объектами, это будет ссылаться на первое.

 $clientRow[0]->status 

Не уверен, что вы ожидаете от результата, так что, надеюсь, выше информации достаточно, чтобы помочь решить проблему?

Небольшое примечание, вам это может не понадобиться ..

 $current_user = wp_get_current_user(); 

Предоставление области $current_user должно быть достаточно.