Wordpress контент страницы, размеченной в php

Мне необходимо получить html контент страницы перед передачей клиенту. (Чтобы сгенерировать содержание).

У меня есть страницы, размеченные непосредственно в php в файлах page-{id страницы}.php.

Для страниц, которые размечены внутри редактора есть возможность сделать это так:

add_filter( 'the_content', 'filter_the_content_in_the_main_loop', 1 );
 
function filter_the_content_in_the_main_loop( $content ) {
//anycode
}

https://developer.wordpress.org/reference/hooks/the_content/

Но для уникальных страниц , с отдельными шаблонами , у которых контент внутри файла page-{id страницы}.php такой метод ничего не возвращает. Поскольку их контент отсутствует.

Как я могу сделать это? Возможно есть не wordpress методы, а чистые php?


Ответы (1 шт):

Автор решения: KAGG Design

Добавьте такой код в ваш плагин:

function my_html_start() {
    ob_start();
}

add_action( 'init', 'my_html_start' );

function my_html_end() {
    $html = ob_get_clean();

    if ( $html ) {
        // Add table of contents to html.
        // ...

        echo $html;
    }
}

add_action( 'shutdown', 'my_html_end', - PHP_INT_MAX );

До начала вывода на экран здесь открывается буфер вывода. В самом начале действий по shutdown мы получаем буфер вывода в переменную $html с полным кодом страницы, внутрь которой можно добавить оглавление. Потом полный код страницы с оглавлением выводим на экран.

→ Ссылка