Рекомендую хостинг Бегет. Перенос сайтов и месяц на тестирование - бесплатно!

Выборка из базы данных WordPress через переменную $wpdb

159

Класс wpdb позволяет получать данные из базы данных wordpress. Обращение к методам класса wpdb идет через глобальную переменную $wpdb.

Пример GET запроса

Нужно помнить, что внутри обычных функций $wpdb нужно определять, как глобальную переменную. Пример:

global $wpdb;
$posts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY ID ASC LIMIT 10");

Этот запрос получает первые 10 записей (постов) из таблицы wp_posts со статусом publish (опубликовано). Чтобы получить последние 10 записей, то в запросе необходимо указать сортировку по убыванию: ORDER BY ID DESC.

Вывод результатов из БД

<?php
global $wpdb;
$posts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY ID ASC LIMIT 10");
if( $posts ) {
foreach ( $posts as $post ) {
$content. = '<h3>'.$post->post_title.'</h3>'; // заголовок постов
$content. = '<p>'.$post->post_content.'</p>'; // контент
$content. = '<span>'.$post->post_date.'</span>'; // дата публикации
}
}
else {
$content="Ничего не найдено";
}
echo $content;
?>

Здесь происходит вывод результатов запроса к БД. При успешном запросе отображаются заголовок, контент и дата публикации записи. В противном случае выводится текст, что ничего не найдено.

Пример DELETE запроса

<?php
$wpdb->query($wpdb->prepare("DELETE FROM $wpdb->posts WHERE ID = '2'"));
?>

Здесь происходит удаление записи с ID=2 из таблицы wp_posts. Для защиты от SQL-инъекций используется метод prepare, который подготавливает SQL-запрос и находится внутри $wpdb->query.

Пример INSERT запроса

Добавим в таблицу `wp_usermeta` новый параметр last_name (фамилия) для юзера с id=1

<?php
$wpdb->query($wpdb->prepare("INSERT INTO $wpdb->`usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (5, 1, 'last_name', 'Doe' )"));
?>

Использование $wpdb при ajax запросах

Чтобы переменная $wpdb работала в кастомных php-файлах при ajax запросах, необходимо подключить ядро WordPress через файл wp-load.php.

<?php
$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-load.php';
?>

Добавить комментарий

Ваш адрес email не будет опубликован.

*
code