Пользовательский шорткод WordPress: Вызов неопределенной функции get_results()

#php #wordpress

#php #wordpress

Вопрос:

Я разработчик, но неопытен в PHP или WordPress. Возиться с существующим сайтом WP (используя тему Divi, если это имеет значение) и хотеть создать несколько коротких кодов, которые извлекаются из базы данных WP. Экспериментируя, я смог заставить работать некоторые пользовательские шорткоды (включая новый файл в тему functions.php). Основные из них работают нормально, но когда я пытаюсь читать из wpdb, страница выдает эту ошибку:

 Error: Call to undefined function get_results() in lt;MY_FILEgt;  

Вот мое досье:

 lt;?php  function list_users() {  global $wpdb;  $users = get_results("SELECT * FROM $wpdb-gt;users");  $result = "lt;pgt;";  foreach ($results as $result) {  $result .= $result-gt;display_name;  $result .= 'lt;brgt;';  }  $result .= "lt;/pgt;";  return $result; } add_shortcode( 'all_users', 'list_users' );  ?gt;  

Есть какие-нибудь советы новичку в PHP?

Комментарии:

1. $query= "SELECT * FROM users"; $users = $wpdb-gt;get_results($query); Может быть, именно так вы и должны это написать

Ответ №1:

Вам не нужно получать пользователей из запроса базы данных. WordPress предоставляет get_users функции. Итак, вы можете попробовать использовать приведенный ниже код.

 function list_users() {  ob_start();   $users = get_users();  foreach( $users as $user ) {  echo 'lt;pgt;'. $user-gt;data-gt;display_name .'lt;/pgt;';  }   $output = ob_get_contents();  ob_end_clean();  return $output; } add_shortcode( 'all_users', 'list_users' );  

Комментарии:

1. Спасибо за ответ. Мне нужно использовать гораздо более сложные запросы ко многим различным таблицам. Это был просто тест, чтобы попытаться извлечь данные из базы данных.

Ответ №2:

Хорошо, ответ был очевиден, так как я не вызывал get_results в $wpdb.

Это решило проблему:

 lt;?php  function list_users() {  global $wpdb;  $users = $wpdb-gt;get_results("SELECT * FROM $wpdb-gt;users");  $result = "lt;pgt;";  foreach ($results as $result) {  $result .= $result-gt;display_name;  $result .= 'lt;brgt;';  }  $result .= "lt;/pgt;";  return $result; } add_shortcode( 'all_users', 'list_users' );  ?gt;