coderisimo
@coderisimo

Плагин для wordpress с CUSTOM POST TYPE. Имеет ли смысл?

Увы, полный дилетант в данной области. В связи с этим прошу совета у более искушенных коллег ))
Обычно создаю плагины по следующей схеме. Пишу сам файл плагина , где привязываю к шорткоду подключение шаблона, нужных скриптов и стилей. Если нужны какие-то параметры, передаю через шорт код.

дела. все это как-то так :
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' );


эта часть задачки решена, а как быть с роутингом?
  • Вопрос задан
  • 356 просмотров
Пригласить эксперта
Ответы на вопрос 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
По поводу необходимости выхода за пределы автономного плагина - в этом нет необходимости, CPT может быть непубличным и доступным только в админке + через ваш плагин в вашем темплейте, без роутинга и тд.

Что касается всего остального - да, вы делаете очень неэффективно, и, я б даже сказал криво. Без обид. Сейчас уже валюсь отдыхать, завтра постараюсь найти минутку и написать подробно что не так и куда копать (сделаю апдейт этого ответа).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы