Работа с пользовательскими таблицами базы данных в WordPress

настраиваемая таблица базы данныхЯ показал вам много способов, которыми WordPress уже является самой гибкой CMS

, Быстрое сканирование страницы «Лучшие из плагинов WordPress» также покажет некоторые из множества уникальных и нишевых способов сделать ваш блог более напряженным. Я даже показал вам, как использовать пользовательские типы сообщений

создать свою собственную мини базу данных

; но я упустил одну вещь, я думаю.

Что если у вас уже есть база данных, например, информация о клиентах, но вы хотите иметь возможность запрашивать эти данные и отображать их в шаблоне WordPress? Сегодня я покажу вам, как это сделать безопасно в движке WordPress.

Требования

  • Ваш собственный сайт WordPress, очевидно.
  • Базовые навыки работы с PHP и MySQL — я рекомендую учебные пособия по Tizag PHP и MySQL, так как они охватывают более чем достаточно, и вы можете работать с ними за один день и обращаться к ним снова, когда это необходимо.
  • Существующий набор данных в MySQL.
  • Командная строка доступа PHPMyAdmin для объединения баз данных.
  • Единая база данных с обоими наборами данных — это означает, что вам нужно либо объединить таблицы базы данных WordPress с существующей базой данных, и изменить wp-config.php, чтобы отразить новое имя пользователя и пароль базы данных; или импортируйте существующий набор данных в базу данных WordPress. Проще, если у вас нет другой системы, которая полагается на данные. В любом случае, я собираюсь предположить, что вы уже сделали этот шаг — ознакомьтесь с моей статьей о том, как сделать полное резервное копирование базы данных через командную строку SSH

    если вам нужны некоторые указатели там.

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

Зачем мне это делать?

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

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

В качестве ссылки на имена столбцов и таблиц в базе данных может оказаться полезным установить плагин Database Browser, который также позволит вам выполнять базовые запросы where и order by для проверки вашего кода SQL. Вот снимок экрана с образцом набора данных, который я создал — в данном случае это таблица «Клиенты», содержащая некоторую базовую информацию о каждом из моих очень важных клиентов.

настраиваемая таблица базы данных

Что именно мы будем здесь делать?

  • Создание нового шаблона страницы, к которому мы затем можем применить некоторый пользовательский код PHP.
  • Рассмотрим, как создать собственный запрос к базе данных, а затем проанализировать результаты, используя встроенные классы базы данных WordPress.
  • Глядя на разрешения на случай, если вы хотите ограничить доступ.

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

Если вы хотите использовать свой собственный PHP-код, самый простой способ сделать это — создать собственный шаблон, а затем применить шаблон к определенной странице, которую вы создаете в WordPress. Начните с открытия файлов вашей темы и дублирования файла page.php (или single.php, если его нет). Переименуйте его в нечто очевидное, например «template-Customers.php», как я выбрал.

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

/ *
Название шаблона: Клиенты
* /

[/ NOEDIT]

Очевидно, называйте это как хотите.

Теперь найдите функцию основного контента. Вы можете удалить его, если хотите, но я просто добавлю дополнительный код после него. С темой по умолчанию двадцать одиннадцать вы ищете:

[/ NOEDIT]

Но в большинстве тем это будет что-то вроде:

[/ NOEDIT]

Это бит, который отображает ваш пост-контент, поэтому все, что вы добавите после этого, будет показано сразу после основной области контента. Просто чтобы проверить, все ли работает, давайте добавим базовый оператор echo и сохраним файл.

[/ NOEDIT]

[/ NOEDIT]

Прежде чем мы сможем это проверить, нам нужно создать страницу на странице администратора WordPress и применить к ней шаблон нашей страницы.

Настраиваемая таблица базы данных WordPress

Опубликуйте и проверьте страницу, чтобы увидеть, сработал ли ваш оператор echo.

Настраиваемая таблица базы данных WordPress

Класс пользовательских запросов

Чтобы получить прямой доступ к базе данных, все, что вам нужно сделать, это использовать объект $ wpdb, сделав его глобальным. Эти три строки должны это сделать — замените общий оператор echo, который мы сделали ранее, следующим:

get_results ("SELECT * FROM клиентов;");
print_r ($ клиентов);
?>

[/ NOEDIT]

Сохраните и обновите страницу. Функция print_r () просто выгружает все данные из объекта клиента — так что вы должны увидеть, что ваш простой оператор SQL для выбора всего из таблицы клиента работает хорошо. Теперь все, что вам нужно сделать, это проанализировать результаты чего-то полезного. Конечно, вы можете поместить любой оператор SQL select в метод get_results (), но я здесь не для того, чтобы научить вас SQL, поэтому мы пока остановимся на простом захвате всего.

Чтобы разобрать результаты во что-то более значимое, сейчас я просто воспользуюсь базовой таблицей. Замените метод print_r на следующий код (не волнуйтесь, позже я вставлю полный код, если вы не хотите собирать его вместе):

эхо "«;
foreach ($ клиентов как $ клиентов) {
эхо "«;
эхо "«;
эхо "«;
эхо "«;
эхо "«;
эхо "«;
}
эхо "
"$ На клиентах> имя.""$ На клиента> по электронной почте.""$ На клиента> телефон.""$ На клиента> адрес."
«;

[/ NOEDIT]

Если у вас есть каждый объект customer внутри foreach, вы можете легко получить доступ к именам полей с помощью $ customer-> field_name — это действительно не может быть проще.

Закрепление вещей

В этом случае я действительно не хочу, чтобы мои данные о клиентах отображались кому-либо и индексировались поисковыми системами, но я все же хочу, чтобы они отображались во внешнем интерфейсе с использованием этого шаблона; Так что мы можем сделать? Легко, мы собираемся использовать условное выражение WordPress is_user_logged_in () и отображать быстрое сообщение, если они не таковы. Вот снова весь блок кода с новым условным добавлением:

get_results ("SELECT * FROM клиентов;");
эхо "«;
foreach ($ клиентов как $ клиентов) {
эхо "«;
эхо "«;
эхо "«;
эхо "«;
эхо "«;
эхо "«;
}
эхо "
"$ На клиентах> имя.""$ На клиента> по электронной почте.""$ На клиента> телефон.""$ На клиента> адрес."
«; еще: echo "Извините, только зарегистрированные пользователи могут просматривать эту информацию"; ENDIF; ?>

[/ NOEDIT]

Сохраните и обновите, и вы все равно должны увидеть содержимое. Однако выйдите из системы, затем обновите страницу, и вы увидите сообщение «Извините, только зарегистрированные пользователи…».

настраиваемая таблица базы данных

Если вы хотите ограничить это для определенных уровней пользователей, а не для всех зарегистрированных пользователей, то вместо этого вы должны использовать условный current_user_can () вместе со связанной возможностью (подробнее о возможностях в кодексе). Это будет проверять, например, пользователей-администраторов — единственных пользователей, которые могут управлять параметрами плагина:

current_user_can ('manage_options')

[/ NOEDIT]

Резюме

Я собираюсь оставить это там сегодня, поскольку все остальное станет SQL

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

На следующей неделе я расскажу о немного более хитрой теме о том, как вставить данные обратно в вашу пользовательскую базу данных, используя форму на странице, и немного магии AJAX / jQuery.

У вас еще нет установки WordPress? Ознакомьтесь с нашим руководством по установке WordPress на Bluehost

,

Ссылка на основную публикацию
Adblock
detector