WordPress как на ладони
wordpress jino

Как WP получает данные постов?

Например у меня в файле шаблона index.php есть такой код

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
	<a href="<?php the_permalink(); ?>">
		<h2><?php the_title(); ?></h2>
	</a>

	<div class="custom">
		<?php the_date(); ?> опубликовал <strong><?php the_author(); ?></strong> в рубрике <?php the_category(); ?>
		<?php the_content(); ?>
		<a href="<?php the_permalink(); ?>">Читать далее</a>
	</div>
	<?php endwhile; ?>
<?php endif; ?>

Не суть важно какой код, главное чтобы записи из БД выводил.

Так вот хочу я понять как же он это делает? Например беру функцию the_content() и пытаюсь, так сказать с заду наперед проследить как это работает. Но что-то я ни чего не понимаю

Вот так вот проследил и все

...
<?php the_content()?>
...
./post_templates
	the_content()
	get_the_content()
	./post.php
		get_post()
		class WP_POST
		...magic...
		./wp_db
			...magic...

, а ответа не нашел, хочу проследить в коде прям от подключение к БД до того момента вывода в index.php , те как проходит весь процесс вывода постов?

Накидайте материала или вкратце весь стек вызова и что там происходит, пожалуйста!

С WP всего 3ий день, прошу простить, если вопрос глупый!

Заранее благодарен за любой ответ!

3
pankovalxndr12 3.2 года назад
  • 0
    Kama4697

    Прочитайте вот эту статью, возможно что-то проясниться.

    Вот картинка, как загружается весь WordPress:
    http://wp-kama.ru/wp-content/uploads/2013/12/wordpress-core-load.png

    Смотрите по картинке. Когда срабатывает функция wp() (файл template-loader.php) WP определяет тип страницы и создает запрос к БД на основе типа страницы, полученные данные помещаются в глобальную переменную $wp_query и др. переменные. На основе этой переменной работает цикл:

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    Что касается the_content(). Она и другие функции цикла работают на основе глобальной переменной $post. Все данные берутся из нее... Например the_content(), говоря просто, её код можно записать так:

    global $post;
    echo apply_filters( 'the_content', $post->post_content );

    т.е. берутся данные, которые на момент вызова есть в глобальной $post обрабатываются и выводятся на экран.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.