Вывод данных из любой таблицы БД на страницу через кастомный шаблон

На днях попалась интересная задача — нужно было вывести набор данных на страницу в WordPress

Самый «вордпрессным» методом является либо непосредственное внесение данных на страницу через редактирование поста, либо их распихивание через кастомные поля.

В моем кейсе ни один из этих методов не подходил — данные должны были периодически обновлятся, и намного проще бы было сделать отдельную таблицу и запрашивать данные из нее при отображении поста.  Кроме того кастомные поля еще и прилично тормозят при большом количестве постов…

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

Создание своего шаблона поста

Начнем с шаблона, он был необходим для того что вставить в нем нужную разметку для вывода, и не заниматься правкой каждого поста в единичном варианте

В WordPress кастомный шаблон делается очень просто — в папке с темой создаем файл с любым именем, в который помещаем шаблон который отрисует нам страницу (самый простой вариант, скопировать нужный шаблон текущей темы) и в начале файла указываем где этот шаблон должен использоваться, например

/**
 * The template for displaying all single posts
 *
 * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post
 *
 * Template Name: My Article
 * Template Post Type: post
 * 
 */
Дальше код шаблона

В данном примере создан шаблон с названием My Article, который можно использовать для типа записи post

Выбрать шаблон можно, на странице нужного типа записи справа внизу,

Вывод данных из таблицы в базе данных

Далее, для вывода в шаблон данных из БД я использовал стандарную функцию WordPress get_results вот таким образом

global $wpdb;
$data = $wpdb->get_results( "SELECT * FROM data", ARRAY_A);

Это занесет в массив $data все данных из таблицы data.

Если же нужно вывести данные, которые каким то образом связаны с постом, например по его тайтлу, то можно сделать так

$postname = get_the_title();
global $wpdb;
$data = $wpdb->get_results( "SELECT * FROM wp_data WHERE name = '$postname'", ARRAY_A);

В общем вывод из БД зависит от вашей задачи. А в сам пост уже можно вывести через обычный синтаксис PHP, примерно вот так

...
<div class="data"><?php echo $data['value1'] ?></div>
....

Пользуйтесь кому полезно, stay tuned!

1 thought on “Вывод данных из любой таблицы БД на страницу через кастомный шаблон”

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

Ваш e-mail не будет опубликован.