Как получить записи из базы данных в 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 и в каких случаях это чаще всего необходимо. Большое спасибо.
Tushar Sharma
@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?
Chittaranjan