Как получить записи из базы данных в WordPress
index.php
:
<?php
// Получаем записи из таблицы wp_posts с заголовком 'Auto Draft'
$new = $wpdb->query("SELECT * FROM wp_posts WHERE post_title='Auto Draft'");
// Получаем первую строку результата (устаревший метод)
$new1 = mysql_fetch_row($new);
// Выводим первое поле из строки
echo $new1[0];
?>
Как получить записи из базы данных?
Как база данных взаимодействует с файлами WordPress?

wpdb
— это простая обёртка вокруг функций mysql_*
, но их нельзя смешивать. $wpdb->query
не возвращает ссылку на базу данных, которая нужна для mysql_fetch_row
. Вместо этого...
...возвращается целое число, соответствующее количеству затронутых/выбранных строк. Если произошла ошибка MySQL, функция вернёт FALSE. (Примечание: поскольку могут быть возвращены как 0, так и FALSE, убедитесь, что используете правильный оператор сравнения: равенство == vs. идентичность ===).
Всё это можно прочитать в Codex.
Таким образом, $wpdb->query
действительно предназначен для запросов, которые не возвращают данные, например, для удаления.
Вам нужно следующее:
$new = $wpdb->get_results("select * from wp_posts where post_title='Auto Draft'");
Также стоит использовать prepare
, если вы работаете с пользовательскими данными.
$new = $wpdb->get_results($wpdb->prepare("select * from wp_posts where post_title=%s",$str));
Это вернёт объект
, но вы можете передать второй параметр, чтобы получить массив
. Вы можете перебирать этот объект или массив с помощью стандартных операций PHP для объектов/массивов.
Также существуют $wpdb->get_var
и $wpdb->get_col
.
База данных хранит динамический контент — записи, страницы, настраиваемые опции, таблицы категорий и т.д., как и в любом другом PHP/MySQL-приложении. Это не просто перечислимый список.
Что касается вопроса в комментарии: «В каком случае нам, скорее всего, нужно использовать это?» — без понятия. Всё зависит от того, что вы делаете. Это не имеет однозначного ответа, но в большинстве случаев вам не нужно (и не следует) писать SQL для работы с базой данных. Для этого существует множество встроенных функций — WP_Query
, WP_User_Query
, set_option
, update_post_meta
, wp_update_post
, и этот список можно продолжать ещё около двадцати строк.

Очень мило с вашей стороны :) Какова роль базы данных? То есть, как использовать запросы к базе данных в WordPress и в каких случаях это чаще всего необходимо. Большое спасибо.

@s_ha_dum не могли бы вы проверить следующие моменты. - Вы упомянули $wpdb->query is really for queries that don't return data, like a delete.
, но в случае delete-запроса $wpdb->query
вернет количество затронутых записей. - Вы использовали $wpdb->results
. Разве не должно быть $wpdb->get_results
?
