coderisimo
@coderisimo

Какой оптимальный способ добавления разметки плагина в область контента страницы на Wordpress?

Я создаю плагин - калькулятор, форму, графический редактор (что угодно).
Он добавляется на страницу при помощи шорткода. Конфигурирую все в шорткоде. Как оптимально добавлять разметку плагина на страницу?
переопределять весь шаблон мне не надо. футер, хедер и все остальное пусть будет на месте. мне нужно изменить лишь контент. Можно как-то переопределить шаблон именно контента? Я делал "в лоб" - вот так :
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');


сказали "криво". А как будет "прямо"? Спасибо!
  • Вопрос задан
  • 274 просмотра
Пригласить эксперта
Ответы на вопрос 2
Piocan-Alex
@Piocan-Alex
Прокачался до рейдера и дредноута в EVE
Мне кажется "криво" это непосредственно сам факт того, что вы виджетом меняете полностью шаблон страницы, зачем? Когда можно просто сделать шаблон страницы?

Виджет как правило просто какой-то отдельных блок с информацией, а не весь контент. Если вы делаете календарь во всю страницу, это не виджет, это календарь. Подмена понятий.

Терминология:
Виджет — это небольшой информационный блок, размещенный на главной странице Яндекса. Обычно он содержит данные или сервис другого сайта, например, новости, последние сообщения в форуме, случайный анекдот, поиск по вакансиям и так далее.
Взято с https://yandex.ru/support/widgets/

Создайте файл например Custom-page.php
и укажите вначале
<?php
/*
*
* Template Name: Название шаблона
*
*/
?>
После этого при добавлении страницы вы сможете его указать внизу справа в разделе Атрибуты страницы- Шаблон

Ну и конечно не забудьте про то, что к этому файлу надо подтянуть шапку и футер
Ответ написан
Комментировать
coderisimo
@coderisimo Автор вопроса
Александр, спасибо за ответ, но давайте разберемся с сутью вопроса :
Мне кажется "криво" это непосредственно сам факт того, что вы виджетом меняете полностью шаблон страницы
Я же пишу что не меняю шаблон страницы. Приведенный мой код как раз не трогает шаблон, он вставляет МОЮ разметку в область контента. Смотрите , вот написано :
....переопределять весь шаблон мне не надо. футер, хедер и все остальное пусть будет на месте. мне нужно изменить лишь контент.
Я же специально об этом написал...

далее...
Виджет как правило просто какой-то отдельных блок с информацией, а не весь контент. Если вы делаете календарь во всю страницу, это не виджет, это календарь. Подмена понятий.

Где вы увидели про виджет? Я не использую виджеты.

Далее , мне нужно чтобы вся работа делалась плагином. Т.е чтобы пользователю не нужно было что-то переключить при создании страницы. Сделал страницу, добавил шорт код - вуаля.
В плагине шаблон можно переопределять вот как то так :
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' );


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

Еще раз благодарю за ответ
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы