Я думаю, что я понял большую часть того, как создавать свои собственные темы, но это одно: как может цикл в say page.php знать, какую страницу просматривать, когда он проходит через все страницы моего сайта? Если я загружаю одну из моих отдельных страниц (например, контактную форму), как page.php знает, что она должна загружать только одну конкретную страницу, когда она проходит через все из них?
Ваш цикл на page.php
не перебирает все страницы сайта. Он зацикляет все страницы, возвращаемые основным запросом, и хранится в глобальной переменной $wp_query
, так как все первичные страницы «WordPress» работают, включая страницы пост-архива, категорию, теги и т. Д. Для любой «страницы» «только одна страница будет в глобальном $wp_query
поэтому вы увидите ее только.
Хотя детали могут усложниться, что происходит со страничной загрузкой в WordPress, так это то, что класс WP_Query
получает экземпляр довольно рано, и он анализирует загружаемый URL и обрабатывает, какие сообщения запрашивать. Эта информация wp_query
глобальную переменную wp_query
и после этого ее wp_query
многочисленные биты кода (поэтому вы никогда не хотите изменять эту переменную вручную или через query_posts()
). Это чрезвычайно сложный механизм, который вы можете увидеть здесь: https://core.trac.wordpress.org/browser/tags/4.3.1/src/wp-includes/query.php#L1448
Более короткая / упрощенная версия ответа @ s_ha_dum.
Запуск шаблонов для фактического вывода HTML – это последнее, что делает WordPress. Перед тем, как попасть туда, wordpress отправляет URL-адрес и на основании этого определяет конкретный контент, который будет отображаться. На самом деле это не открыто, хотя плагины могут расширить цикл, чтобы сделать какой-нибудь странный материал, он полностью определяется на основе URL-адреса.