Как интегрировать пользовательскую таблицу базы данных в WordPress и использовать функции WordPress

6 янв. 2011 г., 20:33:30
Просмотры: 34.9K
Голосов: 8

Я использую Wordpress 3.0.4 и мне сложно определиться с подходом. Вот моя проблема:

У меня есть таблица в базе данных mysql под названием widgets, содержащая около 10 properties (свойств), таких как id, size, color и т.д.

Теперь я хочу интегрировать эту таблицу в Wordpress, желательно таким образом, чтобы можно было получать постраничные списки widgets, показывать информацию об отдельном виджете и иметь гибкую разметку.

Предпочтительно иметь возможность изменять пользовательский шаблон так, чтобы я мог менять положение каждого свойства на странице (Например, я хотел бы разместить size-property вверху страницы слева, позже я могу захотеть поместить его внизу справа).

Какой будет лучший способ хранить widgets, получать их с использованием встроенных функций Wordpress, и как мне добиться такой гибкой разметки?

Я уже писал собственные плагины, поэтому у меня есть более чем базовые знания Wordpress/PHP/MySQL.

1
Комментарии

Пожалуйста, проверьте этот плагин http://wordpress.org/extend/plugins/custom-tables/, он сэкономил мне много работы - просто определите поля вашей таблицы и затем импортируйте данные.

User User
11 апр. 2012 г. 19:24:12
Все ответы на вопрос 4
3

Именно для этого и предназначены пользовательские типы записей.

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

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

6 янв. 2011 г. 21:19:56
Комментарии

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

JanWillem JanWillem
6 янв. 2011 г. 21:34:02

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

Don Gilbert Don Gilbert
6 янв. 2011 г. 22:11:34

Для тех, кто попал сюда через Google... Существует множество плагинов, которые позволяют импортировать (а позже обновлять с помощью) CSV-файлы и преобразовывать их в контент пользовательских типов записей. Ура, спустя четыре года.

Will Will
7 авг. 2015 г. 02:08:52
1

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

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

6 янв. 2011 г. 21:14:57
Комментарии

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

JanWillem JanWillem
6 янв. 2011 г. 21:34:39
0

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

Таким образом, такой подход действительно возможен, хотя мы пока не нашли способа использовать корзину для их удаления, и мне пришлось добавить собственную пагинацию в админ-панели с помощью JQuery.

Если у вас нет веской причины поступать именно так, я согласен с @MathSmath: создайте пользовательский тип записи и сохраняйте их как "настоящие" записи WordPress.

23 авг. 2011 г. 14:38:16
1
-1

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

Надеюсь, это поможет!

23 февр. 2015 г. 22:01:26
Комментарии

Это не ответ на вопрос.

Nilambar Sharma Nilambar Sharma
24 февр. 2015 г. 05:34:51