Как интегрировать пользовательскую таблицу базы данных в WordPress и использовать функции WordPress
Я использую Wordpress 3.0.4
и мне сложно определиться с подходом. Вот моя проблема:
У меня есть таблица в базе данных mysql
под названием widgets
, содержащая около 10 properties
(свойств), таких как id, size, color и т.д.
Теперь я хочу интегрировать эту таблицу в Wordpress
, желательно таким образом, чтобы можно было получать постраничные списки widgets
, показывать информацию об отдельном виджете и иметь гибкую разметку.
Предпочтительно иметь возможность изменять пользовательский шаблон так, чтобы я мог менять положение каждого свойства на странице (Например, я хотел бы разместить size-property вверху страницы слева, позже я могу захотеть поместить его внизу справа).
Какой будет лучший способ хранить widgets
, получать их с использованием встроенных функций Wordpress
, и как мне добиться такой гибкой разметки?
Я уже писал собственные плагины, поэтому у меня есть более чем базовые знания Wordpress/PHP/MySQL
.

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

Спасибо, MathSmath, в данном случае ты имеешь в виду, что я должен преобразовать данные в таблице в записи? Полагаю, в этом случае мне понадобится использовать метаданные записей, чтобы сохранить гибкость вёрстки?

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

Если эта таблица находится в той же базе данных, что и ваша установка WordPress, вы можете использовать $wpdb
для получения данных из нее. В противном случае вы можете создать собственный объект wpdb
с данными подключения к другой базе данных.
Я не уверен, что вы подразумеваете под виджетами в данном случае, это не похоже на виджеты WordPress? Поскольку я не совсем понимаю этот момент, у меня нет предложений по обработке шаблона для них.

К вашему сведению, мы реализовали подобное решение, где данные действительно извлекаются из внешнего источника. Мы создали пользовательские типы записей и функции, которые активируются различными хуками WordPress, в результате чего данные можно отображать как для посетителей сайта, так и в админ-панели wp-admin. Записи не хранятся в wpdb, даже в качестве "прокси"-записей.
Таким образом, такой подход действительно возможен, хотя мы пока не нашли способа использовать корзину для их удаления, и мне пришлось добавить собственную пагинацию в админ-панели с помощью JQuery.
Если у вас нет веской причины поступать именно так, я согласен с @MathSmath: создайте пользовательский тип записи и сохраняйте их как "настоящие" записи WordPress.

Насколько я знаю, то, что вы хотели сделать, можно легко реализовать с помощью Caspio. Вам даже не нужно использовать какую-либо базу данных. Они предоставляют онлайн-базу данных, поверх которой можно создавать различные функции, управляемые базой данных. Вот видео, которое я видел у них, показывающее, как создать и встроить поисковую базу контактов на сайт WP всего за несколько минут без какого-либо программирования: https://www.youtube.com/watch?v=BgHV7ZPplo0
Надеюсь, это поможет!
