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 шт):
Добавьте такой код в ваш плагин:
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 с полным кодом страницы, внутрь которой можно добавить оглавление. Потом полный код страницы с оглавлением выводим на экран.