Зачем объявлять $ post глобально?

Я новичок в разработке WordPress и вижу примеры повсюду, у которых есть строка, чтобы объявить переменную $ post явно через:

global $post; 

Но я тестировал свое использование без этой строки, и это не имеет заметной разницы.

Почему вы должны явно объявлять $ post?

  • Пример 1 (в учебнике)
  • Пример 2 (пример использования кода)

Solutions Collecting From Web of "Зачем объявлять $ post глобально?"

В учебнике (пример 1) он должен объявить глобальную запись $, чтобы он мог получить доступ к post_parent из нее. В такой функции $ post не является глобальной переменной, если только он не делает этого.

В кодексе (пример 2) он объявляется глобальным, потому что образец кода является просто образцом, явно пытающимся сказать вам, что переменная $ post является глобальной.

Теперь, в то время как шаблоны тембров включены таким образом, что они работают в глобальном пространстве переменных (они включены из основного потока выполнения, а не изнутри функции), другого кода может не быть. Таким образом, в основной части шаблона вам не нужно указывать global $post , но в функции, которую вы хотели бы использовать.

Поймите также, что WordPress ориентирован на программистов всех уровней мастерства. Вам не обязательно быть мастером-программистом, чтобы иметь возможность сделать все, когда ваша цель – просто изменить вашу тему или веб-сайт или что-то в этом роде. WordPress превратился из базовой процедурной части кода в более объектно-ориентированную и основанную на API с течением времени. Таким образом, в кодовой базе есть такие реликвии. Если вы разрабатываете новую систему с нуля, вы, вероятно, избегаете использовать глобальные переменные целиком по разным причинам. WordPress содержит много их для обратной совместимости и таких, и «новые» программисты, которые могут не понимать переменную область видимости, могут быть смущены, когда они копируют небольшой фрагмент кода в место, где оно не будет работать из-за этой области. Таким образом, объявление вещей как глобальное явно устраняет проблемы, а также делает код более понятным, заявляя, что рассматриваемая переменная находится в глобальной области.

Кроме того, и я должен сказать это много, примеры кода в документации и учебниках предназначены для чтения и понимания, а не для копирования и вставки. Но люди копируют и вставляют их, независимо. Лучше не копировать код, а узнать, что он вам говорит, а затем написать свою собственную версию с нуля, что делает именно то, что вы пытаетесь сделать.

Глобальная переменная $post устанавливается в $wp_query->the_post() ( WP_Post ) внутри цикла и доступна во время цикла. $post содержит данные, полученные с текущего поста.

Когда вы находитесь внутри цикла, вам не нужно вызывать $post global, поскольку он уже доступен. Когда вы находитесь за пределами цикла, и вам нужно получить доступ к пост-данным, вам нужно использовать глобальный $post чтобы сделать доступными данные для публикации.