Увы, полный дилетант в данной области. В связи с этим прошу совета у более искушенных коллег ))
Обычно создаю плагины по следующей схеме. Пишу сам файл плагина , где привязываю к шорткоду подключение шаблона, нужных скриптов и стилей. Если нужны какие-то параметры, передаю через шорт код.
дела. все это как-то так :
function load_table_manager()
{
wp_enqueue_style('table_manager_css',"//handsontable.com/dist/handsontable.full.css");
ob_start();
include dirname(__FILE__) . '/template.php'; // здесь вся нужная разметка
$result = ob_get_contents();
ob_end_clean();
table_manager_scripts(); // функция для подгрузки JS через wp_enqueue_script
return $result;
}
add_shortcode('table_manager','load_table_manager');
// далее ф-ции для работы ajax итд
Кстати, если этот способ кажется вам варварским, напишите мне почему.Что мне нравится в таком подходе. Плагин полностью автономен. Все, что ему нужно хранится в его папках.
А теперь вопрос. Нужно реализовать табличный редактор. Т.е на админской стороне создается таблица , редактируется и вставляется для демонстрации посетитетялям. Для таблиц используется Handsontable (ребование заказчика). Довольно удобный инструмент, с которым даже я (!!) вроде разобрался.)))) Заказчик хочет реализации с созданием кастомного типа поста. Я не понимаю преимуществ. Поправьте ,если я не прав. Мне придется править роутинг, придется писать не только в файле плагинов , но и в шаблонах темы. Т.е автономность плагина пойдет на .... в общем, совсем не туда. Я не вижу преимуществ, скорее всего из-за отсутствия глубоких знаний предмета.
Сейчас в админке создаем/редактируем новую таблицу. В любую страничку добавляем shortcode вида :
[table_manager table_name ='my_best_table']
и все! Для чего здесь CUSTOM POST TYPE? В чем профит кроме минуса в виде потери автономности плагина?
Спасибо
UPDATE/ возможно шаблоны можно переопределить в самом плагине , вот так :
function get_custom_post_type_template($single_template) {
global $post;
if ($post->post_type == 'data_table') {
$single_template = dirname( __FILE__ ) . '/template.php';
}
return $single_template;
}
add_filter( 'single_template', 'get_custom_post_type_template' );
эта часть задачки решена, а как быть с роутингом?