Вопрос или проблема
Я импортировал свой сайт на WordPress и сталкиваюсь с большой проблемой: как сделать SQL-запрос, чтобы отображать данные на моих страницах с помощью WordPress? Например, у меня есть продукт, цена, описание, которые необходимо отобразить на сайте. Как я могу это сделать?
Если вы пытаетесь выполнить запрос к той же базе данных, в которой установлен ваш WordPress, то есть отличный способ легко выполнить SQL-запрос. У WordPress есть класс абстракции доступа к базе данных под названием wpdb
, который позволяет выполнять сырые запросы MySQL без каких-либо проблем.
Вы можете начать использовать его одним из двух способов, приведенных ниже:
// 1-й способ - обявление $wpdb как глобальной переменной и использование ее для выполнения SQL-запроса, который возвращает объект PHP
global $wpdb;
$results = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}options WHERE option_id = 1", OBJECT );
или
// 2-й способ - использование суперглобальной переменной $GLOBALS. Не требует ключевого слова global (но может не быть лучшей практикой)
$results = $GLOBALS['wpdb']->get_results( "SELECT * FROM {$wpdb->prefix}options WHERE option_id = 1", OBJECT );
Изучите документацию здесь и начните!
Если это база данных третьих сторон, вы можете сначала подключиться к ней, а затем получить результаты.
mydb = new wpdb('username','password','database','localhost');
$rows = $mydb->get_results("select Name from my_table");
Если это локальная база данных, вы также можете использовать глобальный объект wpdb.
global $wpdb;
$results = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}options WHERE option_id = 1", OBJECT );
Для справки.
https://developer.wordpress.org/reference/classes/wpdb/
Вы можете запустить приведенный выше код в файле functions.php.
В зависимости от ваших требований вы можете привязать его к какому-либо действию или добавить его как шорткод.
например.
add_shortcode( 'dbresults', 'wp_dbresutls' );
function wp_dbresutls() {
// ваш код для базы данных
}
Ответ или решение
Для отображения данных из базы данных с помощью WordPress после импорта вашего сайта, вы можете использовать класс доступа к базе данных, предоставленный WordPress, который называется wpdb
. Этот класс позволяет выполнять SQL-запросы, и вы можете работать как с вашей текущей базой данных WordPress, так и с другими базами данных.
Использование класса wpdb
Если вы хотите выполнить запрос к той же базе данных, в которой установлен WordPress, выполните следующие шаги:
- Объявите глобальную переменную
$wpdb
:
global $wpdb;
$results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}your_table_name", OBJECT);
В приведенном выше коде replace your_table_name
на название вашей таблицы, из которой вы хотите извлечь данные. Использование {$wpdb->prefix}
гарантирует, что вы получите правильный префикс таблиц, который может варьироваться в зависимости от конфигурации вашего сайта.
- Использование
GLOBALS
:
Вы также можете получить доступ к классу wpdb
, используя суперглобальный массив:
$results = $GLOBALS['wpdb']->get_results("SELECT * FROM {$GLOBALS['wpdb']->prefix}your_table_name", OBJECT);
Работа с внешней базой данных
Если вы хотите выполнить запрос к третьей стороне базы данных, вы сначала должны установить соединение:
$mydb = new wpdb('username', 'password', 'database', 'localhost');
$rows = $mydb->get_results("SELECT name, price, description FROM your_table_name");
Замените 'username'
, 'password'
, 'database'
и 'your_table_name'
на ваши данные для подключения.
Отображение данных на страницах WordPress
Чтобы отобразить данные на страницах WordPress, вы можете создать шорткод. Это позволит вам вставлять данные в контент страниц или записей.
Вот пример кода для создания шорткода:
add_shortcode('dbresults', 'wp_dbresults');
function wp_dbresults() {
global $wpdb;
$results = $wpdb->get_results("SELECT product, price, description FROM {$wpdb->prefix}your_table_name", OBJECT);
if (empty($results)) {
return "Нет данных для отображения.";
}
$output = '<ul>';
foreach ($results as $row) {
$output .= '<li>';
$output .= '<strong>Продукт:</strong> ' . esc_html($row->product) . '<br>';
$output .= '<strong>Цена:</strong> ' . esc_html($row->price) . '<br>';
$output .= '<strong>Описание:</strong> ' . esc_html($row->description);
$output .= '</li>';
}
$output .= '</ul>';
return $output;
}
Добавьте этот код в файл functions.php
вашей темы. После этого вы сможете использовать шорткод [dbresults]
в любом редакторе постов WordPress для отображения данных.
Заключение
Теперь у вас есть все необходимые шаги для выполнения SQL-запросов в WordPress и отображения полученных данных на веб-сайте. Вы можете адаптировать предложенные примеры к своим нуждам. Для получения дополнительной информации о классе wpdb
ознакомьтесь с документацией по wpdb.