Появилась у меня задачка написать отдельный файлик для работы с базой сайта на wordpress, чтоб этот php файл можно было с помощью include вставить в пост или страницу на блоге. Но в то же время нужно было сделать так, чтоб этот файлик мог обрабатывать аякс запросы отдельно от всего блога и выдавать только результат.
Вот тут и пригодились функции wordpress для работы с базой данных. Класс WordPress database весьма обширен и предоставляет набор методов для эффективной работы с базой данных и таким образом позволяет использовать стандарты WordPress.
Оновные методы модуля:
- insert($table, $data, $format) — вставляет строку в таблицу через массивы.
- update($table, $data, $where, $format, $where_format) — обновляет строку в таблицу через массивы.
- get_var($query, $x, $y) — получение одной переменной из базы.
- query($query) — выполняет запрос MySQL с текущим подключением
- get_results($query, $output) — получение результата выполнения SQL из базы… одна или несколько строк.
- escape($data) — форматирование контента перед вставкой в базу используя addslashes(), для безопасности
Также интересны следующие методы:
- set_prefix($prefix) — используется для установки префикса таблицы для таблиц WordPress, может быть использован для перекрытия префикса в любое время
- prepare($query) — безопасно подготавливает запрос SQL для выполнения подобно синтакису sprintf().
- get_row($query, $output, $y) — получение одной строки из базы.
- get_col($query, $x) — получение одной колонки из базы в виде массива.
Таким образом мне для работы с этим классом нужно было вставить в мой php файл строчки
require_once( dirname(__FILE__) . '/wp-load.php' ); global $wpdb;
А далее уже использовать его функции на свое усмотрение. Например:
if($row = $wpdb->get_row( "SELECT * FROM `gw_biglion` WHERE `code` = '$code'" )){ if($row->city !== '' and $row->adress !== ''){ $arr = array('code' => $code, 'city' => $city, 'adress' => $adress, 'campaign' => $campaign, 'date' => date('Y-m-d H:i:s')); $wpdb->update('gw_biglion',$arr, array('id' => $row->id) ); $result = '<div class="success">Информация успешно обновлена.</div>'; } else{ $arr = array('code' => $code, 'city' => $city, 'adress' => $adress, 'campaign' => $campaign, 'date' => date('Y-m-d H:i:s')); $wpdb->insert('gw_biglion',$arr); $result = '<div class="success">Информация о Вашем коде успешно добавлена.</div>'; } } else{ $result = '<div class="error">Такого кода не существует!</div>'; }
Таким образом получается использовать только необходимый wordpress функционал в своем файле, а это очень удобно!
Помогла статья, спасибо.