Как в wordpress шаблон подключить файл api.php если шаблон хранится в базе а не в файлах?

Ссылка скопирована
1 ответ

Попался сайт на вордпресс, и не могу понять где у него файлы шаблона, сайт одностраничник.

В папках wp-content/themes/twentytwentyfour/templates/index.html пустой, других файлов нет. Не могу понять где искать файлы шаблона, такое ощущение что вся разметка в базе хранится, в админке редактируется только через визуальный редактор, и все.

Структура такая папок шаблона,

Как в wordpress шаблон подключить файл api.php если шаблон хранится в базе а не в файлах?

Мне нужно в шапке подключить php файл, но не могу понять где и как это сделать.

Дополнительно:

Учим матчасть
1. https://codex.wordpress.org/%D0%A7%D0%90%D0%92%D0%...
2. https://codex.wordpress.org/%D0%A1%D0%BE%D0%B7%D0%... (тут достаточно почитать "Анатомия Темы")
3. https://codex.wordpress.org/%D0%98%D0%B5%D1%80%D0%...

Мне нужно в шапке подключить php файл, но не могу понять где и как это сделать, подскажите пожалуйста решение. Любые советы.

В 99% случаев не нужно этого делать.

  • Refguser, пока на шорткодах сделал с добавлением в functions.php своей логики, спасибо.
  • https://ru.wordpress.org/plugins/what-the-file/
    С помощью этого плагина можно узнать какой используется файл темплейта

    • О супер, спасибо, попробую!
    • Cheizer, отметь решение если помог
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Web-разработка Ответ

    В современных блочных темах WordPress часть шаблонов действительно хранится не как PHP-файлы, а как HTML-шаблоны и записи в базе. Это Full Site Editing. Но подключать произвольный api.php прямо из такого шаблона — плохая идея. Лучше вынести API-логику в плагин, shortcode, block или REST endpoint.

    Если нужно выполнить PHP внутри шаблона, в FSE-шаблон напрямую PHP не вставляется. HTML-шаблоны не исполняют PHP-код. Поэтому варианты такие:

    • создать shortcode и вставить его в контент/шаблон;
    • создать динамический блок;
    • создать REST API endpoint;
    • перейти на PHP-шаблон в классической/дочерней теме;
    • вынести логику в plugin и вызвать через hook.

    Простой shortcode:

    add_shortcode('my_api_block', function () {
        ob_start();
        include plugin_dir_path(__FILE__) . 'api.php';
        return ob_get_clean();
    });

    add_shortcode('my_api_block', function () { ob_start(); include plugin_dir_path(__FILE__) . 'api.php'; return ob_get_clean(); });

    После этого в редакторе можно вставить:

    [my_api_block]

    [my_api_block]

    Но если api.php обрабатывает запросы, а не выводит блок, лучше сделать REST endpoint:

    add_action('rest_api_init', function () {
        register_rest_route('site/v1', '/data', [
            'methods' => 'GET',
            'callback' => 'my_api_callback',
            'permission_callback' => '__return_true',
        ]);
    });

    add_action('rest_api_init', function () { register_rest_route('site/v1', '/data', [ 'methods' => 'GET', 'callback' => 'my_api_callback', 'permission_callback' => '__return_true', ]); });

    И обращаться к нему по URL:

    /wp-json/site/v1/data

    /wp-json/site/v1/data

    Искать шаблоны FSE можно в админке “Внешний вид → Редактор”, а в базе они хранятся как wp_template и wp_template_part. Но руками править их в базе не нужно.

    Итог: если шаблон в базе, PHP в него не подключается напрямую. Делайте shortcode, динамический блок или REST endpoint. Это безопаснее и переживёт обновления темы.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно