Вопрос или проблема
Я новичок в разработке на WordPress. Я создаю плагин и у меня есть вопрос. У меня есть пользовательская таблица в базе данных. Есть ли способ создать пользовательский тип записи, связанный с этой таблицей? Кстати, я использую CPT UI. Как мне подойти к этой проблеме? Есть идеи?
Заранее спасибо
Нет, пользовательский тип записи все еще является записью в таблице постов, вы не можете его связать, потому что это не связь. Это столбец в таблице.
Если вы хотите иметь тот же интерфейс, что и у записей, но для пользовательской таблицы, вам придется реализовать это самостоятельно:
- с помощью страницы настроек
- пользовательский SQL код
- пользовательская реализация
WP_List_Table
, создайте класс, который наследует отWP_List_Table
и реализуйте методы, чтобы он загружал ваши строки из базы данных - Другая пользовательская страница настроек, которая будет выполнять функции нового/добавить/редактировать экрана, реализованная с нуля
Достаточно сказать, что эта задача слишком широка, чтобы ответить на нее в одном вопросе/ответе, и вам придется столкнуться с большим количеством ручной работы, включая создание постраничной навигации с нуля и т.д.
Было бы проще использовать настоящий пользовательский тип записи или создать индивидуальный интерфейс. Моя рекомендация – интерфейс на базе JS с использованием REST-эндпоинтов.
Ответ или решение
Создание кастомного типа записей в WordPress с использованием внешней таблицы базы данных может представлять определенные сложности. Давайте разберем этот процесс подробно и рассмотрим потенциальные пути его осуществления.
Понимание кастомных типов записей и таблиц базы данных
Кастомные типы записей в WordPress изначально проектируются как записи внутри таблицы wp_posts
. Это значит, что они не могут быть напрямую связаны с пользовательскими таблицами базы данных. Тем не менее, существует ряд подходов, которые вы можете использовать для интеграции данных из своей кастомной таблицы с интерфейсом WordPress.
Подходы к решению проблемы
-
Создание отдельного интерфейса для работы с кастомной таблицей:
Чтобы работать с данными из вашей таблицы, вы можете создать собственный административный интерфейс. Это включает в себя:-
Кастомная страница настроек: Используйте API добавления страниц WordPress, чтобы создать новую страницу в административной панели, на которой будут отображаться и управляться данные из вашей таблицы.
-
Кастомный SQL-код: Для работы с вашей таблицей вам потребуется использовать функции работы с базой данных WordPress, такие как
global $wpdb
, чтобы выполнять необходимые запросы (SELECT, INSERT, UPDATE, DELETE) к вашей кастомной таблице. -
Класс на основе WP_List_Table: Создайте класс, унаследованный от
WP_List_Table
, который позволит вам загружать и отображать строки вашей базы данных. В этом классе вам нужно будет переопределить методы для функциональности, такой как пагинация и сортировка.
-
-
Кастомные страницы для добавления/редактирования записей:
Вам потребуется разработать отдельный интерфейс для создания и редактирования записей. Эти страницы также будут использовать ваш кастомный SQL-код для взаимодействия с данными в таблице. -
Реализация REST API:
Если вы хотите интегрировать современные подходы, рассмотрите возможность создания RESTful API для вашей таблицы. Это позволит вам использовать JavaScript для динамичного взаимодействия с данными. Например, вы можете создать AJAX-запросы для добавления, обновления или удаления записей, что упростит интерфейс пользователя и сделает его более интерактивным.
Рекомендации
-
Используйте кастомные типы записей: Если ваши данные могут быть представлены в формате записей, подумайте о том, чтобы использовать стандартный функционал WordPress, создавая кастомные посты. Это упростит вашу задачу, так как вам не придется разрабатывать большую часть функционала с нуля.
-
Изучите код других плагинов: Многие популярные плагины предлагают хороший пример интеграции кастомных типов записей и пользовательских таблиц. Исследование их реализаций может дать вам концептуальное понимание и ускорить процесс разработки.
Заключение
Хотя интеграция кастомных типов записей с пользовательскими таблицами базы данных в WordPress требует значительных усилий, с правильным подходом и инструментами, такими как WP_List_Table
, вы сможете создать эффективное решение. Тем не менее, если ваши требования позволяют, использование стандартных возможностей WordPress может значительно упростить разработку и сократить время реализации.