С помощью пользовательских запросов вы можете выполнять любые чтения и / или манипуляции с данными. Мгновенно открывается мир новых возможностей.
Зачем использовать пользовательские запросы?
Основные функциональные возможности WordPress подходят для самых простых задач, но что бы вы сделали, если бы захотели реализовать некоторые конкретные потребности? Возможно, вы пишете плагин? Тогда вы должны узнать, как вы можете использовать SQL-запросы в WordPress прямо сейчас! Официальные ссылки можно найти в Кодексе WordPress ( пользовательские запросы и класс WPDB ).
Класс wpdb
Этот глобальный класс WordPress является ключевым для использования запросов. Фактически, каждая функция использует этот класс.
Используя query
Функция запроса нуждается в строке, содержащей пользовательский запрос. Возвращаемым значением является целое число, соответствующее количеству затронутых / выбранных строк, и значение false, если возникает ошибка.
1
2
|
$query = «SELECT COUNT(apple) FROM fruits»;
$wpdb->query($query);
|
get_results
Эта функция получает несколько строк при выполнении запроса. По умолчанию результатом функции является массив.
1
2
3
4
5
6
7
|
$query = «
SELECT *
FROM wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id = wtt.term_id
WHERE wtt.taxonomy = ‘post_tag’ AND wtt.count = 0″;
$wpdb->get_results($query);
|
get_var
Это вернет одну переменную из базы данных, но полный результат запроса кэшируется для последующего использования. Возвращает NULL, если результат не найден.
1
2
|
$query = «SELECT COUNT(*) FROM users»;
$wpdb->get_var($query);
|
get_row
Полная строка будет возвращена в результате функции, которая может быть объектом, ассоциативным массивом или числовым индексированным массивом. NULL — результат, когда не найдено подходящих данных. result_type
может быть OBJECT
, ARRAY_A
или ARRAY_N
(объект, ассоциативный массив или пронумерованный массив). Смещение — это целое число со значением по умолчанию 0.
1
2
3
4
5
|
$query = «
SELECT * FROM wp_posts
WHERE post_type = ‘post'»;
$wpdb->get_row($query, ARRAY_A, 3);
|
get_col
Для получения столбца используйте эту функцию. На выходе будет размерный массив. Пустой массив будет возвращен, если результат не найден. Второй параметр — это смещение столбца.
1
2
3
4
5
|
$query = «
SELECT * FROM wp_posts
WHERE post_type = ‘post'»;
$wpdb->get_col($query, 3);
|
Подготовленные Запросы
Согласно инструкции php.net:
«Их [подготовленные запросы] можно рассматривать как некий скомпилированный шаблон для SQL, который приложение хочет запустить и который можно настроить с помощью переменных параметров».
Вы можете защитить SQL-запросы от атак SQL-инъекций. Короче говоря, данные в запросах должны быть экранированы SQL перед выполнением запроса для предотвращения атак внедрения. Это легко сделать с помощью метода prepare. В следующем примере значения ’10’, ‘monkey’ и ‘apple’ будут экранированы при использовании в этом методе.
01
02
03
04
05
06
07
08
09
10
|
// Usage: $wpdb->prepare( ‘query’ [, value_parameter, value_parameter … ] );
$wpdb->query( $wpdb->prepare(
«INSERT INTO test_table (post_id, animal, food) VALUES ( %d, %s, %s )»,
array(
10,
‘monkey’,
‘apple’
)
));
|
Настройка сообщений об ошибках
Вы можете включать и выключать сообщения об ошибках с помощью show_errors
и hide_errors
, но вы также можете напечатать:
1
2
|
$wpdb->show_errors();
$wpdb->hide_errors();
|
Контроль кеша
Удаление кеша можно сделать с помощью функции flush
.
1
|
$wpdb->flush();
|
Вставка данных
01
02
03
04
05
06
07
08
09
10
11
12
13
|
$wpdb->insert($table, $data, $format);
$wpdb->insert(
‘foods’,
array(
‘fruit’ => ‘apple’,
‘year’ => 2012
),
array(
‘%s’,
‘%d’
)
);
|
Используемые параметры по порядку:
- имя таблицы для вставки данных в
- данные для вставки (столбец => пары значений) без экранирования
- массив форматов для отображения на каждое из значений в
$data
. Если нет, все значения будут рассматриваться как строки
Обновление данных
01
02
03
04
05
06
07
08
09
10
11
12
13
|
$wpdb->update(
‘foods’,
array(
‘fruit’ => ‘apple’, // string
‘year’ => ‘value2’ // integer (number)
),
array( ‘ID’ => 1 ),
array(
‘%s’, // value1
‘%d’ // value2
),
array( ‘%d’ )
);
|
Используемые параметры по порядку:
- имя таблицы
- данные
- где условия
- формат
- where_format
Колонка Информация
С помощью этой функции вы можете получить информацию о столбцах самого последнего результата. Когда функция вернула OBJECT
и есть свойства, о которых вы мало что знаете, это может быть полезно.
1
|
$wpdb->get_col_info(‘type’, offset);
|
- Тип: информация, которую вы хотите получить, некоторые примеры здесь
-
name
—name
столбца (это по умолчанию) -
table
— имя таблицы, к которой принадлежит столбец -
max_length
— максимальная длина столбца -
not_null
— 1, если столбец не может быть NULL - больше можно найти в справочнике WPDB по WordPress Codex
-
- Смещение: укажите столбец, из которого нужно получить информацию (0 — первый столбец)
Ссылки на таблицы WordPress
На таблицы базы данных WordPress можно ссылаться в классе wpdb
. Это очень удобно, так как имена таблиц могут отличаться от имен по умолчанию. Вот список ссылок на таблицы базы данных WordPress:
-
$wpdb->posts;
-
$wpdb->postmeta;
-
$wpdb->comments;
-
$wpdb->commentmeta;
-
$wpdb->terms;
-
$wpdb->term_taxonomy;
-
$wpdb->term_relationships;
-
$wpdb->users;
-
$wpdb->usermeta;
-
$wpdb->links;
-
$wpdb->options;
Обратите внимание, что нам не нужно включать префикс, это преимущество здесь, когда класс wpdb
позаботится об этом за нас.
Там у нас это есть! Справочник для пользовательских запросов в WordPress, все в одном месте для вас.