Задать вопрос
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 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 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' );


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

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

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

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