Прежде, чем мы перейдем к более сложным модификациям нашей темы, посмотрим на то, как взаимодействуют между собой хуки и файлы шаблона для создания разметки. Откроем файл single.php, который отвечает за отображение отдельной записи:
<?php// calling the header.php
get_header();// action hook for placing content above #container
thematic_abovecontainer();?><div id="container"><?php thematic_abovecontent(); ?><div id="content">
<?php
the_post();
// create the navigation above the content
thematic_navigation_above();
// calling the widget area 'single-top'
get_sidebar('single-top');
// action hook creating the single post
thematic_singlepost();
// calling the widget area 'single-insert'
get_sidebar('single-insert');
// create the navigation below the content
thematic_navigation_below();
// calling the comments template
thematic_comments_template();
// calling the widget area 'single-bottom'
get_sidebar('single-bottom');
?>
</div><!-- #content -->
<?php thematic_belowcontent(); ?>
</div><!-- #container -->
<?php
// action hook for placing content below #container
thematic_belowcontainer();
// calling the standard sidebar
thematic_sidebar();
// calling footer.php
get_footer();
?>
Фунция thematic_singlepost отвечает за вывод полной записи. Выполнив поиск по всему каталогу Thematic, обнаруживаем, что объявление функции находится в файле library/extensions/content-extensions.php:
// Located in single.php
// The Post
function thematic_singlepost() {
do_action('thematic_singlepost');
} //end thematic_singlepost
do_action сообщает механизму WordPress, что действие имело место. Таким образом, активируется выполнение подцепленных функций. Для того, чтобы понять в деталях, как именно это работает, разобьем действие на отдельные пункты:
1. Когда WordPress начинает обрабатывать файл шаблона single.php, он сталкивается с вызовом функции thematic_singlepost().
2. При запуске указанной функции Thematic сообщает WordPress о выполнении действия thematic_singlepost.
3. Начиная с этого момента, все функции, которые были подцеплены к хуку через do_action, будут выполнены.
Для того, чтобы узнать, что дальше будет делать Thematic, необходимо отыскать функции, которые были сцеплены с хуком. Следующее вхождение строки «thematic_singlepost» находится в том же самом файле:
add_action('thematic_singlepost', 'thematic_single_post');
Это и есть необходимый нам вызов add_action. Он сообщает WordPress, что после того как событие thematic_singlepost произошло, нужно вызвать функцию thematic_single_post. Сама функция расположена над вызовом add_action:
function thematic_single_post() { ?>
<div id="post-<?php the_ID(); ?>">
<?php thematic_postheader(); ?>
<div>
<?php thematic_content(); ?>
<?php wp_link_pages('before=<div>' .
?__('Pages:', 'thematic') . '&after=</div>') ?>
</div>
<?php thematic_postfooter(); ?>
</div><!-- .post -->
<?php
}
Несмотря на то, что одну из функций мы нашли, код содержит вызов других функций, которые также спрятаны в папках Thematic. Некоторые из них, такие как, к примеру, thematic_content, находятся в папке library фреймворка Thematic. Другие — к примеру, wp_link_pages, — относятся к встроенной функциональности WordPress. Однако, как первый, так и второй вид функций выполняют схожие задачи: отвечают за представление отдельной записи. Запись состоит из: блока div с несколькими классами и собственным идентификатором; функции, отвечающей за вывод заголовка записи; блока div с контентом; функции, отвечающей за вывод нижней части записи.
Для того, чтобы узнать, как работает одна маленькая функция, нам пришлось перерыть множество различных файлов. Одна функция вызывает другую функцию, а та, в свою очередь, вызывает третью — настоящая «матрешка» из функций. На самом деле, ничего странного в такой структуре нет. Все функциональные элементы разбиты на небольшие обособленные блоки, которые затем можно быстро и легко использовать в различных частях шаблонов, что обеспечивает высокую гибкость при редактировании материалов.
Связанные материалы:


