Где использовать глобальную переменную $ post?

Я сбиваю с толку глобальную переменную $post . Используется ли он внутри цикла или внешнего цикла? В чем преимущество использования внутри и снаружи цикла?

Solutions Collecting From Web of "Где использовать глобальную переменную $ post?"

$post global устанавливается $wp_query->the_post() . Поскольку $post задается основным запросом и тем фактом, что шаблоны установлены в области глобальной переменной, он доступен по всему шаблону, поэтому нет необходимости явно ссылаться на $post global, когда вы находитесь в указанном шаблоне, поскольку Объекты WP_Post могут быть доступны в любом месте. Вы можете получить доступ к объектам WP_Post , просто называя их напрямую, например $post->ID чтобы получить идентификатор страницы на шаблоне страницы

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

Внутри цикла у вас есть такие функции, как:

  • the_ID() или get_the_ID() которые возвращают $post->ID
  • the_title() или get_the_title() которые возвращают $post->post_title
  • the_content() или get_the_content() которые возвращают $post->post_content

и т.п.

Но они применяют фильтры и короткие коды для сообщения, которое вы просматриваете. Для получения дополнительной информации о том, как эти функции работают, посетите ссылку на WordPress Code

В цикле вы должны ВСЕГДА использовать функции, созданные для вас. У них есть причина. Как я уже говорил, они применяют фильтры и расписывают короткие коды. Вы также должны прочитать статью Global Variable в коде WordPress.

По моему мнению, вы должны использовать $post только тогда, когда у вас нет другого выбора. Например: вы хотите, по какой-то причине, нефильтрованное содержимое сообщения.

Внутри цикла функции, описанные выше, и их коллеги возвращают информацию о текущем столбце в цикле. Если вы находитесь на странице категории / архива, используя $post вне цикла, вы получите информацию о последнем $post в цикле (если используется после него) или ничего / когда-либо запрос не был до этого инициализирован.

ПРИМЕЧАНИЕ: это глобальная переменная, которая изменяется в пределах цикла, и если вы используете его / или плагин использует его, как я сделал один раз ( if ($pageposts) : global $post; foreach ($pageposts as $post) : setup_postdata($post); ... endforeach; endif; ) он изменит его снова из-за его описания и намеченной цели:

 /** * Set up global post data. * * @since 1.5.0 * * @param object $post Post data. * @uses do_action_ref_array() Calls 'the_post' * @return bool True when finished. */ 

Я использовал setup_postdata($post) , чтобы использовать функции, setup_postdata($post) с помощью $posts в карусели. Я создавал выбранные должности, которые принадлежали custom post types на основе post meta information , текущей даты и т. Д.

Мой совет, если вы новичок в WordPress, придерживайтесь functions реализованных для вас . У абстрактности есть свои привилегии. Это облегчает поиск, запоминание и использование.